├── .buildkite ├── air_gapped_pipeline.yml ├── build_pipeline.yml ├── build_pr_pipeline.yml ├── hooks │ └── pre-command ├── link_check_pipeline.yml ├── preview_cleaner_pipeline.yml ├── pull-requests.org-wide.json ├── scripts │ ├── build.sh │ ├── build_pr.sh │ ├── cancel_running_pr.sh │ ├── clean_preview_branches.sh │ ├── compare_commits.sh │ ├── publish_air_gapped_docs.sh │ └── test.sh └── test_pipeline.yml ├── .bundle └── config ├── .ci ├── clean_preview_branches.sh ├── packer_cache.sh ├── publish_air_gapped_docs.sh ├── publish_preview.sh └── test.sh ├── .docker ├── README ├── apt │ ├── keys │ │ ├── nodesource.gpg │ │ └── yarn.gpg │ └── sources.list.d │ │ ├── nodesource.list │ │ └── yarn.list └── asciidoctor_2_0_10.patch ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md ├── actions │ └── docs-preview │ │ ├── README.md │ │ └── action.yml └── workflows │ ├── doc-preview.yml │ └── patch-release-version-bump.yml ├── .gitignore ├── .repos └── README.txt ├── .rubocop.yml ├── Dockerfile ├── Dockerfile.dockerignore ├── Gemfile ├── Gemfile.lock ├── Makefile ├── README.asciidoc ├── air_gapped ├── Dockerfile ├── Dockerfile.dockerignore ├── build.sh ├── build_bk.sh └── test.sh ├── build_docs ├── build_docs.pl ├── catalog-info.yaml ├── common.mk ├── conf.yaml ├── doc_build_aliases.sh ├── extra ├── README ├── apm_docs_landing.html ├── apm_guide_landing.html ├── client_docs_landing.html ├── docs_landing.html └── kibana_landing.html ├── gitconfig ├── github.known_hosts ├── integtest ├── .rspec ├── Makefile ├── README ├── html_diff ├── readme_examples │ ├── csharp │ │ └── 8a7e0a79b1743d5fd94d79a7106ee930.adoc │ └── js │ │ ├── 8a7e0a79b1743d5fd94d79a7106ee930.adoc │ │ └── 9fa2da152878d1d5933d483a3c2af35e.adoc └── spec │ ├── air_gapped_spec.rb │ ├── all_books_broken_link_detection_spec.rb │ ├── all_books_change_detection_spec.rb │ ├── all_books_sources_spec.rb │ ├── all_books_spec.rb │ ├── all_books_sub_dir_spec.rb │ ├── helper │ ├── book.rb │ ├── book_conf.rb │ ├── console_alternative_examples.rb │ ├── dest.rb │ ├── dsl.rb │ ├── dsl │ │ ├── convert_all.rb │ │ ├── convert_single.rb │ │ └── file_contexts.rb │ ├── matcher │ │ ├── doc_body.rb │ │ ├── have_same_keys.rb │ │ ├── initial_js_state.rb │ │ ├── redirect_to.rb │ │ └── serve.rb │ ├── opened_docs.rb │ ├── preview.rb │ ├── repo.rb │ ├── serving_docs.rb │ ├── sh.rb │ ├── shell_repo.rb │ └── source.rb │ ├── preview_spec.rb │ ├── single_book_spec.rb │ └── spec_helper.rb ├── jest.js ├── lib └── ES │ ├── BaseRepo.pm │ ├── Book.pm │ ├── BranchTracker.pm │ ├── DocsParser.pm │ ├── DocsRepo.pm │ ├── LinkCheck.pm │ ├── Repo.pm │ ├── Source.pm │ ├── TargetRepo.pm │ ├── Toc.pm │ └── Util.pm ├── package.json ├── preview ├── Dockerfile ├── Dockerfile.dockerignore ├── Makefile ├── __test__ │ ├── buffer_itr.test.js │ ├── clean.test.js │ └── git.test.js ├── buffer_itr.js ├── build.sh ├── clean.js ├── cli.js ├── core.js ├── git.js ├── preview.js └── test.sh ├── renderconf.py ├── renovate.json ├── resources ├── asciidoctor │ ├── .rspec │ ├── Makefile │ ├── README │ ├── lib │ │ ├── alternative_language_lookup │ │ │ ├── alternative.rb │ │ │ ├── converter.rb │ │ │ ├── extension.rb │ │ │ ├── listing.rb │ │ │ ├── lookup.rb │ │ │ ├── report.rb │ │ │ └── summary.rb │ │ ├── care_admonition │ │ │ └── extension.rb │ │ ├── change_admonition │ │ │ └── extension.rb │ │ ├── chunker │ │ │ ├── breadcrumbs.rb │ │ │ ├── convert_outline.rb │ │ │ ├── extension.rb │ │ │ ├── extra_docinfo.rb │ │ │ ├── find_related.rb │ │ │ ├── footnotes.rb │ │ │ ├── link.rb │ │ │ ├── nav.rb │ │ │ ├── obs_breadcrumbs.rb │ │ │ ├── search_breadcrumbs.rb │ │ │ ├── url_to_v3.rb │ │ │ └── v3-mapping.json │ │ ├── copy_images │ │ │ ├── copier.rb │ │ │ └── extension.rb │ │ ├── cramped_include │ │ │ └── extension.rb │ │ ├── delegating_converter.rb │ │ ├── docbook_compat │ │ │ ├── clear_cached_titles.rb │ │ │ ├── convert_admonition.rb │ │ │ ├── convert_dlist.rb │ │ │ ├── convert_document.rb │ │ │ ├── convert_example.rb │ │ │ ├── convert_floating_title.rb │ │ │ ├── convert_inline_quoted.rb │ │ │ ├── convert_links.rb │ │ │ ├── convert_listing.rb │ │ │ ├── convert_lists.rb │ │ │ ├── convert_open.rb │ │ │ ├── convert_outline.rb │ │ │ ├── convert_paragraph.rb │ │ │ ├── convert_quote.rb │ │ │ ├── convert_sidebar.rb │ │ │ ├── convert_table.rb │ │ │ ├── convert_table_cell.rb │ │ │ ├── extension.rb │ │ │ ├── extra_docinfo.rb │ │ │ ├── munge_body.rb │ │ │ └── titleabbrev_handler.rb │ │ ├── edit_me │ │ │ └── extension.rb │ │ ├── elastic_compat_preprocessor │ │ │ └── extension.rb │ │ ├── elastic_compat_tree_processor │ │ │ └── extension.rb │ │ ├── elastic_include_tagged │ │ │ └── extension.rb │ │ ├── extensions.rb │ │ ├── glob_include_processor │ │ │ └── extension.rb │ │ ├── lang_override │ │ │ └── extension.rb │ │ ├── log_util.rb │ │ ├── migration_log.rb │ │ ├── open_in_widget │ │ │ └── extension.rb │ │ ├── relativize_link │ │ │ └── extension.rb │ │ ├── scaffold.rb │ │ └── strip_tags.rb │ └── spec │ │ ├── alternative_language_lookup_spec.rb │ │ ├── care_admonition_spec.rb │ │ ├── change_admonition_spec.rb │ │ ├── chunker_spec.rb │ │ ├── copy_images_spec.rb │ │ ├── cramped_include_spec.rb │ │ ├── docbook_compat_spec.rb │ │ ├── edit_me_spec.rb │ │ ├── elastic_compat_preprocessor_spec.rb │ │ ├── elastic_compat_tree_processor_spec.rb │ │ ├── elastic_include_tagged_spec.rb │ │ ├── open_in_widget_spec.rb │ │ ├── relativize_link_spec.rb │ │ ├── resources │ │ ├── alternative_language_lookup │ │ │ ├── csharp │ │ │ │ ├── 2daa97b0218b60aec4714333e80d7e84.adoc │ │ │ │ ├── 5712902c12d9db15d01e8639ece9ec84.adoc │ │ │ │ ├── 9e01493a85c06a5100ff712f6b3eead4.adoc │ │ │ │ ├── cf49fef4c762241eee0fa3d1e7fa8b58.adoc │ │ │ │ ├── ded0ba409b7c66489d5833dc6aa5f696.adoc │ │ │ │ ├── fcac4757ba45b9b14f316eb9bda58584.adoc │ │ │ │ ├── included.cs │ │ │ │ └── subdir │ │ │ │ │ └── 35f7386b82f3d924b7bfffa26470ac81.adoc │ │ │ ├── java │ │ │ │ └── 5712902c12d9db15d01e8639ece9ec84.adoc │ │ │ └── js │ │ │ │ ├── 39f76498cca438ba11af18a7075d24c9.adoc │ │ │ │ ├── 5712902c12d9db15d01e8639ece9ec84.asciidoc │ │ │ │ └── c4f54085e4784ead2ef4a758d03edd16.adoc │ │ ├── copy_images │ │ │ ├── example1.png │ │ │ ├── example2.png │ │ │ └── images │ │ │ │ └── icons │ │ │ │ ├── callouts │ │ │ │ ├── 1.gif │ │ │ │ ├── 1.png │ │ │ │ ├── 2.gif │ │ │ │ └── 2.png │ │ │ │ ├── caution.gif │ │ │ │ ├── caution.png │ │ │ │ ├── important.gif │ │ │ │ ├── important.png │ │ │ │ ├── note.gif │ │ │ │ ├── note.png │ │ │ │ ├── tip.gif │ │ │ │ ├── tip.png │ │ │ │ ├── warning.gif │ │ │ │ └── warning.png │ │ ├── cramped_include │ │ │ ├── Example.java │ │ │ ├── colist1.adoc │ │ │ └── colist2.adoc │ │ ├── does_not_break_line_numbers │ │ │ └── missing_callout.adoc │ │ ├── edit_me │ │ │ ├── appendix1.adoc │ │ │ ├── appendix2.adoc │ │ │ ├── bibliography1.adoc │ │ │ ├── bibliography2.adoc │ │ │ ├── chapter1.adoc │ │ │ ├── chapter2.adoc │ │ │ ├── colophon1.adoc │ │ │ ├── colophon2.adoc │ │ │ ├── dedication1.adoc │ │ │ ├── dedication2.adoc │ │ │ ├── float1.adoc │ │ │ ├── float2.adoc │ │ │ ├── glossary1.adoc │ │ │ ├── glossary2.adoc │ │ │ ├── section1.adoc │ │ │ └── section2.adoc │ │ ├── elastic_compat_preprocessor │ │ │ └── target.adoc │ │ └── elastic_include_tagged │ │ │ └── Example.java │ │ ├── shared_examples │ │ └── does_not_break_line_numbers.rb │ │ ├── snippets │ │ ├── snippet.console │ │ ├── snippet.ece │ │ ├── snippet.ess │ │ ├── snippet.kibana │ │ └── snippet.sense │ │ └── spec_helper.rb ├── legacy_redirects.conf ├── readme │ ├── cat.jpg │ ├── chunking-toc.png │ ├── example.svg │ └── screenshot.png ├── style │ ├── Makefile │ └── pretend_regexp_isnt_mutable.rb ├── test │ ├── Makefile │ ├── dsl │ │ └── file_context.rb │ └── matcher │ │ └── file_exist.rb └── web │ ├── Makefile │ ├── __test__ │ └── air_gapped_template.test.js │ ├── air_gapped_template.html │ ├── docs.js.licenses │ ├── docs_js │ ├── __tests__ │ │ ├── actions │ │ │ ├── modal.test.js │ │ │ └── settings.test.js │ │ ├── components │ │ │ ├── alternative_picker.test.jsx │ │ │ ├── alternative_switcher.test.js │ │ │ ├── modal.test.js │ │ │ └── mount.test.js │ │ ├── docs.test.js │ │ ├── localization.test.js │ │ ├── prettify │ │ │ ├── lang-asciidoc.test.js │ │ │ └── lang-console.test.js │ │ └── utils.test.js │ ├── actions │ │ ├── index.js │ │ ├── modal.js │ │ └── settings.js │ ├── components │ │ ├── alternative_picker.jsx │ │ ├── alternative_switcher.js │ │ ├── console_widget.jsx │ │ ├── feedback_modal.jsx │ │ ├── feedback_widget.jsx │ │ ├── modal.js │ │ ├── mount.js │ │ └── tabbed_widget.js │ ├── deps.js │ ├── index-v1.js │ ├── localization.js │ ├── prettify │ │ ├── lang-asciidoc.js │ │ └── lang-console.js │ ├── store.js │ └── utils.js │ ├── lib │ ├── bootstrap │ │ └── bootstrap.css │ ├── inter │ │ ├── Inter-Black.woff │ │ ├── Inter-Black.woff2 │ │ ├── Inter-BlackItalic.woff │ │ ├── Inter-BlackItalic.woff2 │ │ ├── Inter-Bold.woff │ │ ├── Inter-Bold.woff2 │ │ ├── Inter-BoldItalic.woff │ │ ├── Inter-BoldItalic.woff2 │ │ ├── Inter-ExtraBold.woff │ │ ├── Inter-ExtraBold.woff2 │ │ ├── Inter-ExtraBoldItalic.woff │ │ ├── Inter-ExtraBoldItalic.woff2 │ │ ├── Inter-ExtraLight-BETA.woff │ │ ├── Inter-ExtraLight-BETA.woff2 │ │ ├── Inter-ExtraLightItalic-BETA.woff │ │ ├── Inter-ExtraLightItalic-BETA.woff2 │ │ ├── Inter-Italic.woff │ │ ├── Inter-Italic.woff2 │ │ ├── Inter-Light-BETA.woff │ │ ├── Inter-Light-BETA.woff2 │ │ ├── Inter-LightItalic-BETA.woff │ │ ├── Inter-LightItalic-BETA.woff2 │ │ ├── Inter-Medium.woff │ │ ├── Inter-Medium.woff2 │ │ ├── Inter-MediumItalic.woff │ │ ├── Inter-MediumItalic.woff2 │ │ ├── Inter-Regular.woff │ │ ├── Inter-Regular.woff2 │ │ ├── Inter-SemiBold.woff │ │ ├── Inter-SemiBold.woff2 │ │ ├── Inter-SemiBoldItalic.woff │ │ ├── Inter-SemiBoldItalic.woff2 │ │ ├── Inter-Thin-BETA.woff │ │ ├── Inter-Thin-BETA.woff2 │ │ ├── Inter-ThinItalic-BETA.woff │ │ ├── Inter-ThinItalic-BETA.woff2 │ │ ├── Inter-italic.var.woff2 │ │ ├── Inter-upright.var.woff2 │ │ ├── Inter.var.woff2 │ │ ├── LICENSE.txt │ │ └── inter.css │ ├── noto-sans-japanese │ │ ├── LICENSE.txt │ │ ├── NotoSansJP-Black.otf │ │ ├── NotoSansJP-Black.woff │ │ ├── NotoSansJP-Black.woff2 │ │ ├── NotoSansJP-Bold.otf │ │ ├── NotoSansJP-Bold.woff │ │ ├── NotoSansJP-Bold.woff2 │ │ ├── NotoSansJP-DemiLight.otf │ │ ├── NotoSansJP-DemiLight.woff │ │ ├── NotoSansJP-DemiLight.woff2 │ │ ├── NotoSansJP-Light.otf │ │ ├── NotoSansJP-Light.woff │ │ ├── NotoSansJP-Light.woff2 │ │ ├── NotoSansJP-Medium.otf │ │ ├── NotoSansJP-Medium.woff │ │ ├── NotoSansJP-Medium.woff2 │ │ ├── NotoSansJP-Regular.otf │ │ ├── NotoSansJP-Regular.woff │ │ ├── NotoSansJP-Regular.woff2 │ │ ├── NotoSansJP-Thin.otf │ │ ├── NotoSansJP-Thin.woff │ │ ├── NotoSansJP-Thin.woff2 │ │ └── noto-sans-japanese.css │ ├── prettify │ │ ├── lang-esql.js │ │ ├── lang-sql.js │ │ ├── lang-yaml.js │ │ └── prettify.js │ └── roboto-mono │ │ ├── LICENSE.txt │ │ ├── roboto-mono-latin-400-normal.woff │ │ ├── roboto-mono-latin-400-normal.woff2 │ │ └── roboto-mono.css │ ├── postcss.config.js │ ├── static │ ├── android-chrome-192x192.png │ ├── apple-icon-114x114.png │ ├── apple-icon-120x120.png │ ├── apple-icon-144x144.png │ ├── apple-icon-152x152.png │ ├── apple-icon-180x180.png │ ├── apple-icon-57x57.png │ ├── apple-icon-60x60.png │ ├── apple-icon-72x72.png │ ├── apple-icon-76x76.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ ├── favicon.ico │ ├── favicon_16x16.png │ ├── favicon_32x32.png │ ├── favicon_64x64_16bit.png │ ├── logo-elastic-footer-white.svg │ └── manifest.json │ ├── style │ ├── admonishment.pcss │ ├── air_gapped.pcss │ ├── alternative_picker.pcss │ ├── base_styles.pcss │ ├── calloutlist.pcss │ ├── code.pcss │ ├── console_widget.pcss │ ├── conum.pcss │ ├── docbook.pcss │ ├── example.pcss │ ├── feedback.pcss │ ├── heading.pcss │ ├── icons.pcss │ ├── img.pcss │ ├── img │ │ ├── alert.svg │ │ ├── check.svg │ │ ├── copy.svg │ │ ├── edit-me-private.png │ │ ├── edit-me.png │ │ ├── gear.png │ │ ├── icons │ │ │ ├── bug.svg │ │ │ ├── checkInCircleFilled.svg │ │ │ └── warningFilled.svg │ │ ├── important.svg │ │ ├── link.png │ │ ├── minus.png │ │ ├── note.svg │ │ ├── plus.png │ │ ├── rtpcontainer │ │ │ ├── icon-beats-bb-white.svg │ │ │ ├── icon-cloud-bb-white.svg │ │ │ ├── icon-elastic-stack-bb-white.svg │ │ │ ├── icon-elasticsearch-bb-white.svg │ │ │ ├── icon-expand.svg │ │ │ ├── icon-kibana-bb-white.svg │ │ │ ├── icon-logstash-bb-white.svg │ │ │ ├── icon-xpack-bb-white.svg │ │ │ ├── logo-apm-32-white.svg │ │ │ ├── logo-app-search-32-white.svg │ │ │ ├── logo-beats-32-white.svg │ │ │ ├── logo-business-analytics-32-white.svg │ │ │ ├── logo-cloud-32-white.svg │ │ │ ├── logo-code-search-32-white.svg │ │ │ ├── logo-ece-32-white.svg │ │ │ ├── logo-elasticon-32-white.svg │ │ │ ├── logo-elasticsearch-32-white.svg │ │ │ ├── logo-enterprise-search-32-white.svg │ │ │ ├── logo-hadoop-32-white.svg │ │ │ ├── logo-kibana-32-white.svg │ │ │ ├── logo-logging-32-white.svg │ │ │ ├── logo-logstash-32-white.svg │ │ │ ├── logo-maps-32-white.svg │ │ │ ├── logo-metrics-32-white.svg │ │ │ ├── logo-siem-32-white.svg │ │ │ ├── logo-site-search-32-white.svg │ │ │ ├── logo-stack-32-white.svg │ │ │ └── logo-uptime-32-white.svg │ │ ├── tip.svg │ │ ├── warning.svg │ │ ├── xpack-default.svg │ │ └── xpack-hover.svg │ ├── layout.pcss │ ├── link.pcss │ ├── list.pcss │ ├── nav.pcss │ ├── on_this_page.pcss │ ├── openapi.pcss │ ├── page_header.pcss │ ├── rtpcontainer.pcss │ ├── settings_modal.pcss │ ├── sidebar.pcss │ ├── tabbed_widget.pcss │ ├── table.pcss │ ├── this_page.pcss │ ├── toc.pcss │ ├── util.pcss │ ├── video.pcss │ └── xpack.pcss │ ├── styles-v1.pcss │ ├── styles.css.licenses │ └── template.html ├── schema.yaml ├── shared ├── api-definitions-ex.asciidoc ├── api-ref-ex.asciidoc ├── attributes.asciidoc ├── attributes62.asciidoc ├── cloud │ ├── cloud-login.asciidoc │ ├── ess-access-kibana.asciidoc │ ├── ess-getting-started-obs.asciidoc │ ├── ess-getting-started.asciidoc │ └── tab-widgets │ │ ├── cloud-login-widget.asciidoc │ │ └── code.asciidoc ├── discontinued.asciidoc ├── fn-ref-ex.asciidoc ├── images │ ├── logo_cloud.png │ ├── logo_cloud.svg │ ├── logo_cloud_ece.png │ └── logo_cloud_ece.svg ├── legacy-attrs.asciidoc ├── notices │ ├── README.txt │ ├── page_header-EOL.html │ └── page_header-maintenance.html ├── settings.asciidoc ├── settings55.asciidoc ├── settings56.asciidoc ├── settings60.asciidoc ├── settings61.asciidoc ├── settings65.asciidoc ├── versions.asciidoc └── versions │ ├── ece │ ├── 1.0.asciidoc │ ├── 1.1.asciidoc │ ├── 2.0.asciidoc │ ├── 2.1.asciidoc │ ├── 2.2.asciidoc │ ├── 2.3.asciidoc │ ├── 2.4.asciidoc │ ├── 2.5.asciidoc │ ├── current.asciidoc │ ├── master.asciidoc │ ├── ms-105.asciidoc │ ├── ms-119.asciidoc │ ├── ms-47.asciidoc │ ├── ms-49.asciidoc │ ├── ms-53.asciidoc │ ├── ms-57.asciidoc │ ├── ms-59.asciidoc │ ├── ms-62.asciidoc │ ├── ms-65.asciidoc │ ├── ms-69.asciidoc │ ├── ms-70.asciidoc │ ├── ms-72.asciidoc │ ├── ms-75.asciidoc │ ├── ms-81.asciidoc │ ├── ms-92.asciidoc │ └── release-ms-41.asciidoc │ └── stack │ ├── 5.5.asciidoc │ ├── 5.6.asciidoc │ ├── 6.0.asciidoc │ ├── 6.1.asciidoc │ ├── 6.2.asciidoc │ ├── 6.3.asciidoc │ ├── 6.4.asciidoc │ ├── 6.5.asciidoc │ ├── 6.6.asciidoc │ ├── 6.7.asciidoc │ ├── 6.8.asciidoc │ ├── 7.0.asciidoc │ ├── 7.1.asciidoc │ ├── 7.10.asciidoc │ ├── 7.11.asciidoc │ ├── 7.12.asciidoc │ ├── 7.13.asciidoc │ ├── 7.14.asciidoc │ ├── 7.15.asciidoc │ ├── 7.16.asciidoc │ ├── 7.17.asciidoc │ ├── 7.2.asciidoc │ ├── 7.3.asciidoc │ ├── 7.4.asciidoc │ ├── 7.5.asciidoc │ ├── 7.6.asciidoc │ ├── 7.7.asciidoc │ ├── 7.8.asciidoc │ ├── 7.9.asciidoc │ ├── 7.x.asciidoc │ ├── 8.0.asciidoc │ ├── 8.1.asciidoc │ ├── 8.10.asciidoc │ ├── 8.11.asciidoc │ ├── 8.12.asciidoc │ ├── 8.13.asciidoc │ ├── 8.14.asciidoc │ ├── 8.15.asciidoc │ ├── 8.16.asciidoc │ ├── 8.17.asciidoc │ ├── 8.18.asciidoc │ ├── 8.19.asciidoc │ ├── 8.2.asciidoc │ ├── 8.3.asciidoc │ ├── 8.4.asciidoc │ ├── 8.5.asciidoc │ ├── 8.6.asciidoc │ ├── 8.7.asciidoc │ ├── 8.8.asciidoc │ ├── 8.9.asciidoc │ ├── 8.x.asciidoc │ ├── 9.0.asciidoc │ ├── README │ ├── current.asciidoc │ ├── do-not-delete_legacy-docs.asciidoc │ ├── main.asciidoc │ └── master.asciidoc ├── template ├── Makefile ├── __test__ │ └── template.test.js ├── cli.js └── template.js └── yarn.lock /.buildkite/air_gapped_pipeline.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - key: "publish-air-gapped-doc" 3 | label: ":white_check_mark: Build and publish air-gapped doc" 4 | command: ".buildkite/scripts/publish_air_gapped_docs.sh" 5 | env: 6 | AIR_GAPPED: "docker.elastic.co/docs-private/air_gapped:latest" 7 | agents: 8 | provider: "gcp" 9 | image: family/docs-ubuntu-2204 10 | -------------------------------------------------------------------------------- /.buildkite/link_check_pipeline.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - label: 'Clone built-docs' 3 | command: | 4 | git clone git@github.com:elastic/built-docs --branch master --depth 1 5 | - label: 'ls' 6 | command: | 7 | ls 8 | agents: 9 | provider: "gcp" 10 | image: family/docs-ubuntu-2204 11 | diskSizeGb: 150 12 | machineType: n2-standard-4 13 | # notify: 14 | # - email: "docs-status@elastic.co" 15 | # if: build.state == "failed" 16 | -------------------------------------------------------------------------------- /.buildkite/preview_cleaner_pipeline.yml: -------------------------------------------------------------------------------- 1 | env: 2 | USE_HTTPS_CLONE: true 3 | 4 | steps: 5 | - label: ":white_check_mark: Preview cleaning" 6 | command: ".buildkite/scripts/clean_preview_branches.sh" 7 | agents: 8 | provider: "gcp" 9 | image: family/docs-ubuntu-2204 10 | -------------------------------------------------------------------------------- /.buildkite/scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | set +x 5 | 6 | # Configure the git author and committer information 7 | export GIT_AUTHOR_NAME='Buildkite CI' 8 | export GIT_AUTHOR_EMAIL='docs-status+buildkite@elastic.co' 9 | export GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME 10 | export GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL 11 | 12 | 13 | build_args="" 14 | rebuild_opt="" 15 | broken_links_opt="" 16 | 17 | if [[ "${REBUILD}" == 'rebuild' ]]; then 18 | rebuild_opt="--rebuild" 19 | fi 20 | 21 | if [[ "${BROKEN_LINKS}" == 'skiplinkcheck' ]]; then 22 | broken_links_opt="--skiplinkcheck" 23 | elif [[ "${BROKEN_LINKS}" == 'warnlinkcheck' ]]; then 24 | broken_links_opt="--warnlinkcheck" 25 | fi 26 | 27 | if [[ "${BUILDKITE_BRANCH}" == "master" ]]; then 28 | build_args+=" --push" 29 | fi 30 | 31 | # The docs build can use the ssh agent's authentication socket 32 | # but can't use ssh keys directly so we start an ssh-agent. 33 | 34 | # Temporary workaround until we can move to HTTPS auth 35 | vault read -field=private-key secret/ci/elastic-docs/elasticmachine-ssh-key > "$HOME/.ssh/id_rsa" 36 | vault read -field=public-key secret/ci/elastic-docs/elasticmachine-ssh-key > "$HOME/.ssh/id_rsa.pub" 37 | ssh-keyscan github.com >> "$HOME/.ssh/known_hosts" 38 | chmod 600 "$HOME/.ssh/id_rsa" 39 | 40 | ssh-agent bash -c " 41 | ssh-add && 42 | ./build_docs --all \ 43 | --target_repo git@github.com:elastic/built-docs \ 44 | --reference /opt/git-mirrors/ \ 45 | $build_args \ 46 | $rebuild_opt $broken_links_opt" 47 | -------------------------------------------------------------------------------- /.buildkite/scripts/cancel_running_pr.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -euo pipefail 3 | set +x 4 | 5 | # This script should only be invoked by the Buildkite PR bot 6 | if [ -z ${GITHUB_PR_NUMBER+set} ] || [ -z ${GITHUB_PR_BASE_REPO+set} ];then 7 | echo "One of the following env. variable GITHUB_PR_NUMBER, GITHUB_PR_BASE_REPO is missing - exiting." 8 | exit 1 9 | fi 10 | 11 | running_builds_url="https://api.buildkite.com/v2/organizations/elastic/pipelines/${BUILDKITE_PIPELINE_SLUG}/builds" 12 | running_builds_url+="?branch=${BUILDKITE_BRANCH}&state[]=scheduled&state[]=running" 13 | jq_filter="map(select(any(.meta_data; .repo_pr == \"${GITHUB_PR_BASE_REPO}_${GITHUB_PR_NUMBER}\"))) | .[] .number" 14 | 15 | for bn in $(curl -sH "Authorization: Bearer ${BUILDKITE_API_TOKEN}" $running_builds_url | jq -c "${jq_filter}"); do 16 | if [ "$bn" != "${BUILDKITE_BUILD_NUMBER}" ];then 17 | echo "Cancelling build ${bn} targetting the same PR" 18 | cancel_url="https://api.buildkite.com/v2/organizations/elastic/pipelines/${BUILDKITE_PIPELINE_SLUG}/builds/${bn}/cancel" 19 | curl --silent -X PUT -H "Authorization: Bearer ${BUILDKITE_API_TOKEN}" "${cancel_url}" > /dev/null 20 | fi 21 | done 22 | 23 | 24 | -------------------------------------------------------------------------------- /.buildkite/scripts/clean_preview_branches.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | export REPO=git@github.com:elastic/built-docs.git 5 | export IMAGE=docker.elastic.co/docs/build:latest 6 | 7 | # Temporary workaround until we can move to HTTPS auth 8 | vault read -field=private-key secret/ci/elastic-docs/elasticmachine-ssh-key > "$HOME/.ssh/id_rsa" 9 | vault read -field=public-key secret/ci/elastic-docs/elasticmachine-ssh-key > "$HOME/.ssh/id_rsa.pub" 10 | ssh-keyscan github.com >> "$HOME/.ssh/known_hosts" 11 | chmod 600 "$HOME/.ssh/id_rsa" 12 | 13 | ./build_docs --docker-build build 14 | ssh-agent bash -c ' 15 | ssh-add && 16 | docker run --rm \ 17 | -v $(pwd):/docs_build:cached,ro \ 18 | -v ~/.ssh/known_hosts:/root/.ssh/known_hosts:cached,ro \ 19 | -v $SSH_AUTH_SOCK:$SSH_AUTH_SOCK:cached,ro \ 20 | -e SSH_AUTH_SOCK=$SSH_AUTH_SOCK \ 21 | -e GITHUB_TOKEN=$VAULT_GITHUB_TOKEN \ 22 | -v /opt/git-mirrors:/opt/git-mirrors:cached,ro \ 23 | -e CACHE_DIR=/opt/git-mirrors \ 24 | $IMAGE node /docs_build/preview/clean.js $REPO' 25 | -------------------------------------------------------------------------------- /.buildkite/scripts/compare_commits.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | last_successful_build_url="https://api.buildkite.com/v2/organizations/elastic/pipelines/${BUILDKITE_PIPELINE_SLUG}/builds?branch=${BUILDKITE_BRANCH}&state=passed" 4 | LAST_SUCCESSFUL_COMMIT=$(curl -s -H "Authorization: Bearer ${BUILDKITE_API_TOKEN}" $last_successful_build_url | jq -r '.[0].commit') 5 | 6 | echo "Comparing the current docs build commit ${BUILDKITE_COMMIT} to the last successful build commit ${LAST_SUCCESSFUL_COMMIT}" 7 | if [[ "$BUILDKITE_COMMIT" == "$LAST_SUCCESSFUL_COMMIT" ]]; then 8 | echo "The docs repo has not changed since the last build." 9 | buildkite-agent meta-data set "REBUILD" "false" 10 | else 11 | echo "The docs repo has changed since the last build." 12 | buildkite-agent meta-data set "REBUILD" "rebuild" 13 | fi 14 | -------------------------------------------------------------------------------- /.buildkite/scripts/publish_air_gapped_docs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -eo pipefail 3 | 4 | source ./air_gapped/build_bk.sh 5 | echo $DOCKER_PASSWORD | docker login --username $DOCKER_USERNAME --password-stdin docker.elastic.co 6 | echo "Pushing doc to $AIR_GAPPED" 7 | docker push "$AIR_GAPPED" 8 | -------------------------------------------------------------------------------- /.buildkite/scripts/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -euo pipefail 4 | 5 | echo "Building images for docs test" 6 | for IMAGE in build py_test node_test ruby_test integ_test diff_tool; do 7 | echo Building $IMAGE 8 | ./build_docs --docker-build $IMAGE 9 | done 10 | 11 | make 12 | -------------------------------------------------------------------------------- /.buildkite/test_pipeline.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | - label: "Execute tests" 3 | command: ".buildkite/scripts/test.sh" 4 | agents: 5 | provider: "gcp" 6 | image: family/docs-ubuntu-2204 7 | notify: 8 | - email: "docs-status@elastic.co" 9 | if: build.state == "failed" && build.branch == "master" 10 | -------------------------------------------------------------------------------- /.bundle/config: -------------------------------------------------------------------------------- 1 | --- 2 | BUNDLE_PATH: "vendor/bundle" 3 | -------------------------------------------------------------------------------- /.ci/clean_preview_branches.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eo pipefail 4 | 5 | # Uncomment me to test with docker. 6 | # JENKINS_HOME=/var/lib/jenkins 7 | 8 | # Use Jenkin's home as our home because that is where the ssh 9 | # known hosts file lives. 10 | export HOME=$JENKINS_HOME 11 | 12 | export REPO=git@github.com:elastic/built-docs.git 13 | export IMAGE=docker.elastic.co/docs/build:latest 14 | 15 | ./build_docs --docker-build build 16 | ssh-agent bash -c ' 17 | ssh-add && 18 | docker run --rm \ 19 | -v $(pwd):/docs_build:cached,ro \ 20 | -v ~/.ssh/known_hosts:/root/.ssh/known_hosts:cached,ro \ 21 | -v $SSH_AUTH_SOCK:$SSH_AUTH_SOCK:cached,ro \ 22 | -e SSH_AUTH_SOCK=$SSH_AUTH_SOCK \ 23 | -e GITHUB_TOKEN=$GITHUB_TOKEN \ 24 | -v ~/.git-references:/var/lib/jenkins/.git-references:cached,ro \ 25 | -e CACHE_DIR=/var/lib/jenkins/.git-references \ 26 | $IMAGE node /docs_build/preview/clean.js $REPO' 27 | -------------------------------------------------------------------------------- /.ci/packer_cache.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eo pipefail 4 | 5 | cd $(git rev-parse --show-toplevel) 6 | for IMAGE in build py_test node_test ruby_test integ_test diff_tool; do 7 | echo Building $IMAGE 8 | ./build_docs --docker-build $IMAGE 9 | done 10 | -------------------------------------------------------------------------------- /.ci/publish_air_gapped_docs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eo pipefail 4 | 5 | cd "$(git rev-parse --show-toplevel)" 6 | source ./air_gapped/build.sh 7 | docker push "$AIR_GAPPED" 8 | -------------------------------------------------------------------------------- /.ci/publish_preview.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eo pipefail 4 | 5 | cd "$(git rev-parse --show-toplevel)" 6 | source ./preview/build.sh 7 | docker push "$PREVIEW" 8 | -------------------------------------------------------------------------------- /.ci/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eo pipefail 4 | 5 | cd $(git rev-parse --show-toplevel) 6 | 7 | # It'd be a real shame if we couldn't build the packer cache the morning after 8 | # we merge. So let's test that. We'll use the images that it builds to run the 9 | # rests of the tests anyway. 10 | echo "Building packer cache" 11 | ./.ci/packer_cache.sh 12 | 13 | make 14 | -------------------------------------------------------------------------------- /.docker/README: -------------------------------------------------------------------------------- 1 | This contains files we copy to the docker container to build it properly. -------------------------------------------------------------------------------- /.docker/apt/sources.list.d/nodesource.list: -------------------------------------------------------------------------------- 1 | deb https://deb.nodesource.com/node_12.x buster main 2 | -------------------------------------------------------------------------------- /.docker/apt/sources.list.d/yarn.list: -------------------------------------------------------------------------------- 1 | deb https://dl.yarnpkg.com/debian/ stable main 2 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @elastic/docs-repo-owners 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /.github/actions/docs-preview/README.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | GitHub Action to create a GitHub comment with the docs-preview 4 | 5 | * [Usage](#usage) 6 | * [Configuration](#configuration) 7 | * [Customizing](#customizing) 8 | * [inputs](#inputs) 9 | 10 | ## Usage 11 | 12 | ### Configuration 13 | 14 | Given the CI GitHub action: 15 | 16 | ```yaml 17 | --- 18 | on: 19 | pull_request_target: 20 | types: [opened] 21 | 22 | permissions: 23 | pull-requests: write 24 | 25 | jobs: 26 | doc-preview: 27 | runs-on: ubuntu-latest 28 | steps: 29 | - uses: elastic/docs/.github/actions/docs-preview@master 30 | with: 31 | github-token: ${{ secrets.GITHUB_TOKEN }} 32 | repo: ${{ github.event.repository.name }} 33 | preview-path: 'guide/en/observability/master/index.html' 34 | pr: ${{ github.event.pull_request.number }} 35 | 36 | ``` 37 | 38 | ## Customizing 39 | 40 | ### inputs 41 | 42 | Following inputs can be used as `step.with` keys 43 | 44 | | Name | Type | Description | 45 | |-------------------|---------|------------------------------------------------| 46 | | `preview-path` | String | Path to append to base doc url in preview link | 47 | | `repo` | String | The GitHub repository name without org | 48 | | `github-token` | String | The GitHub token | 49 | | `pr` | String | The GitHub PR number | 50 | -------------------------------------------------------------------------------- /.github/workflows/doc-preview.yml: -------------------------------------------------------------------------------- 1 | --- 2 | name: test-docs-preview 3 | 4 | on: 5 | workflow_dispatch: 6 | pull_request_target: 7 | types: [opened] 8 | 9 | permissions: 10 | pull-requests: write 11 | 12 | jobs: 13 | doc-preview-pr: 14 | if: github.event_name == 'pull_request_target' 15 | runs-on: ubuntu-latest 16 | steps: 17 | - uses: elastic/docs/.github/actions/docs-preview@master 18 | with: 19 | github-token: ${{ secrets.GITHUB_TOKEN }} 20 | repo: ${{ github.event.repository.name }} 21 | pr: ${{ github.event.pull_request.number }} 22 | 23 | doc-preview-manual: 24 | if: github.event_name == 'workflow_dispatch' 25 | runs-on: ubuntu-latest 26 | steps: 27 | - uses: elastic/docs/.github/actions/docs-preview@action-update 28 | with: 29 | github-token: ${{ secrets.GITHUB_TOKEN }} 30 | repo: ${{ github.event.repository.name }} 31 | preview-path: 'guide/en/observability/master/index.html' 32 | pr: 2865 33 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | bin 3 | .includepath 4 | .ignorepath 5 | .settings 6 | .classpath 7 | /styles.css 8 | /styles-v1.css 9 | .project 10 | .vscode 11 | .DS_Store 12 | .repos/*/ 13 | *.iml 14 | *.ipr 15 | *.iws 16 | *.log 17 | /*.xml 18 | /*.pdf 19 | metastore_db 20 | html_docs/ 21 | vendor 22 | air_gapped/work 23 | 24 | # Compiled docs.js 25 | .cache/ 26 | resources/web/tests/ 27 | 28 | # Comes from running rspec tests 29 | .rspec_status 30 | 31 | # Comes from running rubocop 32 | .rubocop_cache 33 | 34 | # For running js tests 35 | node_modules 36 | 37 | # The Visual Studio Code Perl extension creates this file 38 | .vstags 39 | 40 | /conf.before.yaml 41 | /conf.after.yaml 42 | -------------------------------------------------------------------------------- /.repos/README.txt: -------------------------------------------------------------------------------- 1 | The .repos directory is used to maintain a local checkout 2 | of all repos needed to build the documentation. 3 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | require: 2 | # Pretend that regexps aren't mutable. They *mostly* aren't already and 3 | # we think it is more idiomatic not to freeze them all over the place. 4 | - ./resources/style/pretend_regexp_isnt_mutable.rb 5 | 6 | AllCops: 7 | TargetRubyVersion: 2.3 8 | CacheRootDirectory: .rubocop_cache 9 | MaxFilesInCache: 1000 10 | 11 | Style/ReturnNil: 12 | Enabled: true 13 | 14 | Style/TrailingCommaInArrayLiteral: 15 | EnforcedStyleForMultiline: comma 16 | 17 | Style/TrailingCommaInHashLiteral: 18 | EnforcedStyleForMultiline: comma 19 | 20 | Style/WordArray: 21 | Enabled: false 22 | 23 | Metrics/AbcSize: 24 | Max: 20 25 | 26 | # The blocks in context and describe can be pretty long and that is ok. 27 | Metrics/BlockLength: 28 | ExcludedMethods: 29 | - context 30 | - describe 31 | - file_context 32 | - page_context 33 | - shared_context 34 | - shared_examples 35 | 36 | Metrics/ClassLength: 37 | Max: 120 38 | 39 | Metrics/MethodLength: 40 | Max: 20 41 | -------------------------------------------------------------------------------- /Dockerfile.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | !.docker 3 | !Gemfile* 4 | !package.json 5 | !yarn.lock 6 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # IMPORTANT: If you change this file you should run `bundle lock` to 2 | # regenerate Gemfile.lock or building the docker image will fail. 3 | source "https://rubygems.org" 4 | 5 | ruby "~> 2.5" 6 | 7 | # We commit Gemfile.lock so we're not going to have "unexpected" version bumps 8 | # of our gems. This file specifies what we think *should* work. Gemfile.lock 9 | # specifies what we *know* does work. 10 | gem "asciidoctor", "~> 2.0" # Used by the docs build 11 | gem "digest-murmurhash", "~> 1.1.1" # Used by a custom asciidoctor plugin 12 | gem "thread_safe", "~> 0.3.6" # Used by asciidoctor 13 | gem "asciidoctor-diagram", "~> 1.5" # Speculative 14 | gem "asciimath", "~> 1.0" # Speculative 15 | 16 | group :test do 17 | gem "rspec", "~> 3.8" 18 | gem "rubocop", "~> 0.64.0" 19 | end 20 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | asciidoctor (2.0.10) 5 | asciidoctor-diagram (1.5.19) 6 | asciidoctor (>= 1.5.7, < 3.x) 7 | asciimath (1.0.8) 8 | ast (2.4.0) 9 | diff-lcs (1.3) 10 | digest-murmurhash (1.1.1) 11 | jaro_winkler (1.5.3) 12 | parallel (1.18.0) 13 | parser (2.6.5.0) 14 | ast (~> 2.4.0) 15 | powerpack (0.1.2) 16 | rainbow (3.0.0) 17 | rspec (3.9.0) 18 | rspec-core (~> 3.9.0) 19 | rspec-expectations (~> 3.9.0) 20 | rspec-mocks (~> 3.9.0) 21 | rspec-core (3.9.0) 22 | rspec-support (~> 3.9.0) 23 | rspec-expectations (3.9.0) 24 | diff-lcs (>= 1.2.0, < 2.0) 25 | rspec-support (~> 3.9.0) 26 | rspec-mocks (3.9.0) 27 | diff-lcs (>= 1.2.0, < 2.0) 28 | rspec-support (~> 3.9.0) 29 | rspec-support (3.9.0) 30 | rubocop (0.64.0) 31 | jaro_winkler (~> 1.5.1) 32 | parallel (~> 1.10) 33 | parser (>= 2.5, != 2.5.1.1) 34 | powerpack (~> 0.1) 35 | rainbow (>= 2.2.2, < 4.0) 36 | ruby-progressbar (~> 1.7) 37 | unicode-display_width (~> 1.4.0) 38 | ruby-progressbar (1.10.1) 39 | thread_safe (0.3.6) 40 | unicode-display_width (1.4.1) 41 | 42 | PLATFORMS 43 | ruby 44 | 45 | DEPENDENCIES 46 | asciidoctor (~> 2.0) 47 | asciidoctor-diagram (~> 1.5) 48 | asciimath (~> 1.0) 49 | digest-murmurhash (~> 1.1.1) 50 | rspec (~> 3.8) 51 | rubocop (~> 0.64.0) 52 | thread_safe (~> 0.3.6) 53 | 54 | RUBY VERSION 55 | ruby 2.5.3p105 56 | 57 | BUNDLED WITH 58 | 1.17.3 59 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | include common.mk 2 | 3 | .PHONY: check 4 | check: unit_test integration_test 5 | 6 | .PHONY: unit_test 7 | unit_test: style style_check test_check asciidoctor_check \ 8 | web_check template_check preview_check conf_check 9 | 10 | .PHONY: style 11 | style: build_docs 12 | $(DOCKER) py_test pycodestyle build_docs 13 | 14 | .PHONY: style_check 15 | style_check: 16 | $(MAKE) -C resources/style 17 | 18 | .PHONY: test_check 19 | test_check: 20 | $(MAKE) -C resources/test 21 | 22 | .PHONY: asciidoctor_check 23 | asciidoctor_check: 24 | $(MAKE) -C resources/asciidoctor 25 | 26 | .PHONY: web_check 27 | web_check: 28 | $(MAKE) -C resources/web 29 | 30 | .PHONY: template_check 31 | template_check: 32 | $(MAKE) -C template 33 | 34 | .PHONY: preview_check 35 | preview_check: 36 | $(MAKE) -C preview 37 | 38 | .PHONY: integration_test 39 | integration_test: 40 | $(MAKE) -C integtest 41 | 42 | .PHONY: conf_check 43 | conf_check: conf.yaml 44 | $(DOCKER) py_test yamale -s schema.yaml conf.yaml --no-strict 45 | -------------------------------------------------------------------------------- /air_gapped/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker.elastic.co/docs/preview:latest 2 | 3 | COPY air_gapped/work/target_repo.git /docs_build/.repos/target_repo.git 4 | 5 | CMD ["/docs_build/build_docs.pl", "--in_standard_docker", "--gapped", "--preview"] 6 | -------------------------------------------------------------------------------- /air_gapped/Dockerfile.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | !air_gapped 3 | -------------------------------------------------------------------------------- /air_gapped/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Build the docker image for the air gapped docs. 4 | 5 | set -eo pipefail 6 | 7 | export AIR_GAPPED=docker.elastic.co/docs-private/bk_air_gapped:latest 8 | 9 | cd $(git rev-parse --show-toplevel) 10 | 11 | if [[ ! -d ~/.git-references/built-docs.git ]]; then 12 | echo "~/.git-references/built-docs.git must exist and contain a reference clone of the built-docs repo" 13 | exit 1 14 | fi 15 | 16 | # Get an up to date copy of the repo 17 | rm -rf air_gapped/work 18 | mkdir air_gapped/work 19 | git clone --reference ~/.git-references/built-docs.git --dissociate \ 20 | --depth 2 --branch master --bare \ 21 | git@github.com:elastic/built-docs.git air_gapped/work/target_repo.git 22 | GIT_DIR=air_gapped/work/target_repo.git git fetch 23 | 24 | # Build the images 25 | source preview/build.sh 26 | DOCKER_BUILDKIT=1 docker build -t $AIR_GAPPED -f air_gapped/Dockerfile . 27 | -------------------------------------------------------------------------------- /air_gapped/build_bk.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Build the docker image for the air gapped docs. 4 | 5 | set -eo pipefail 6 | cd $(git rev-parse --show-toplevel) 7 | 8 | if [[ ! -d /opt/git-mirrors/built-docs.git ]]; then 9 | echo "/opt/git-mirrors/built-docs.git must exist and contain a reference clone of the built-docs repo" 10 | exit 1 11 | fi 12 | 13 | # Get an up to date copy of the repo 14 | mkdir air_gapped/work 15 | git clone --reference /opt/git-mirrors/built-docs.git --dissociate \ 16 | --depth 2 --branch master --bare \ 17 | git@github.com:elastic/built-docs.git air_gapped/work/target_repo.git 18 | GIT_DIR=air_gapped/work/target_repo.git git fetch 19 | 20 | # Build the images 21 | source preview/build.sh 22 | DOCKER_BUILDKIT=1 docker build -t "$AIR_GAPPED" -f air_gapped/Dockerfile . 23 | -------------------------------------------------------------------------------- /air_gapped/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Performs a quick and dirty local test on the air gapped docs. Because this 4 | # runs as it would in k8s you'll need to `docker kill` it when you are done. 5 | # We do have integration tests for this in integtest/spec/air_gapped_spec.rb 6 | # which are much faster because they don't use real data but this is useful too. 7 | 8 | set -e 9 | 10 | cd $(git rev-parse --show-toplevel) 11 | 12 | source ./air_gapped/build.sh 13 | id=$(docker run --rm \ 14 | --publish 8000:8000/tcp \ 15 | -d \ 16 | $AIR_GAPPED) 17 | echo "Started the air gapped docs. Some useful commands:" 18 | echo " docker kill $id" 19 | echo " docker logs -tf $id" 20 | echo "You should eventually be able to access:" 21 | echo " http://master.localhost:8000/guide/index.html" 22 | -------------------------------------------------------------------------------- /common.mk: -------------------------------------------------------------------------------- 1 | SHELL = /bin/bash -eu -o pipefail 2 | TOP = $(shell git rev-parse --show-toplevel) 3 | DOCKER = $(TOP)/build_docs --docker-run 4 | -------------------------------------------------------------------------------- /extra/README: -------------------------------------------------------------------------------- 1 | HTML files included into built docs without modification. -------------------------------------------------------------------------------- /extra/kibana_landing.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /gitconfig: -------------------------------------------------------------------------------- 1 | [safe] 2 | directory = * 3 | -------------------------------------------------------------------------------- /github.known_hosts: -------------------------------------------------------------------------------- 1 | # from 'ssh-keyscan github.com' 2 | github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk= 3 | github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg= 4 | github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl 5 | -------------------------------------------------------------------------------- /integtest/.rspec: -------------------------------------------------------------------------------- 1 | --format documentation 2 | --color 3 | --require spec_helper 4 | -------------------------------------------------------------------------------- /integtest/Makefile: -------------------------------------------------------------------------------- 1 | include ../common.mk 2 | 3 | .PHONY: check 4 | check: style rspec 5 | 6 | .PHONY: style 7 | style: pycodestyle rubocop 8 | 9 | .PHONY: pycodestyle 10 | pycodestyle: html_diff 11 | $(DOCKER) py_test pycodestyle html_diff 12 | 13 | .PHONY: rubocop 14 | rubocop: 15 | $(DOCKER) ruby_test rubocop 16 | 17 | .PHONY: rspec 18 | rspec: 19 | $(DOCKER) integ_test rspec 20 | -------------------------------------------------------------------------------- /integtest/README: -------------------------------------------------------------------------------- 1 | This directory contains integration tests that can be run with `make`. While 2 | you can run rspec locally with bundler it isn't going to work outside of the 3 | docker image booted by the `Makefile`. 4 | -------------------------------------------------------------------------------- /integtest/readme_examples/csharp/8a7e0a79b1743d5fd94d79a7106ee930.adoc: -------------------------------------------------------------------------------- 1 | [source,csharp] 2 | ---- 3 | var searchResponse = _client.Search(s => s 4 | .Query(q => q 5 | .QueryString(m => m 6 | .Query("foo bar") <1> 7 | ) 8 | ) 9 | ); 10 | ---- 11 | <1> Here's the explanation for csharp 12 | -------------------------------------------------------------------------------- /integtest/readme_examples/js/8a7e0a79b1743d5fd94d79a7106ee930.adoc: -------------------------------------------------------------------------------- 1 | [source,js] 2 | ---- 3 | const result = await client.search({ 4 | body: { query: 'foo bar' } <1> 5 | }) 6 | ---- 7 | <1> Here's the explanation for js 8 | -------------------------------------------------------------------------------- /integtest/readme_examples/js/9fa2da152878d1d5933d483a3c2af35e.adoc: -------------------------------------------------------------------------------- 1 | [source,js-result] 2 | ---- 3 | { 4 | "statusCode": 200, 5 | "body": { 6 | "hits": { 7 | "total": { "value": 0, "relation": "eq" }, 8 | "hits": [] 9 | } 10 | } 11 | } 12 | ---- 13 | -------------------------------------------------------------------------------- /integtest/spec/helper/dsl/convert_single.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'digest' 4 | 5 | module Dsl 6 | module ConvertSingle 7 | ## 8 | # Include a context into the current context that converts asciidoc files 9 | # into html and adds some basic assertions about the conversion process. 10 | # Pass a block that takes a `Repo` object and uses it to build and return 11 | # an index file to convert. 12 | def convert_single_before_context 13 | convert_before do |src, dest| 14 | repo = src.repo 'src' 15 | from = yield repo 16 | repo.commit 'commit outstanding' 17 | convert = dest.prepare_convert_single(from, '.') 18 | convert.convert 19 | end 20 | include_examples 'convert single' 21 | end 22 | shared_context 'convert single' do 23 | let(:out) { outputs[0] } 24 | it 'prints the "Done" when it is finished' do 25 | expect(out).to include('Done') 26 | end 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /integtest/spec/helper/matcher/doc_body.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ## 4 | # Matches extracts the "body" of a docs page, removing its template. 5 | RSpec::Matchers.define :doc_body do |expected| 6 | match do |actual| 7 | body = actual.sub(/.+/m, '') 8 | .sub(/.+/m, '') 9 | 10 | expected.matches? body 11 | end 12 | failure_message do 13 | "doc_body didn't match: #{expected.failure_message}" 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /integtest/spec/helper/matcher/have_same_keys.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ## 4 | # Match the keys in two hashes, printing the extra or missing keys when there 5 | # is a failure. 6 | RSpec::Matchers.define :have_same_keys do |expected| 7 | match do |actual| 8 | expected_keys = expected.keys.sort 9 | actual_keys = actual.keys.sort 10 | expected_keys == actual_keys 11 | end 12 | failure_message do |actual| 13 | expected_keys = expected.keys.sort 14 | actual_keys = actual.keys.sort 15 | 16 | missing = expected_keys - actual_keys 17 | extra = actual_keys - expected_keys 18 | 19 | msg = 'expected keys to match exactly but' 20 | if missing 21 | msg += " missed:\n" 22 | missing.each { |k| msg += "#{k} => #{expected[k]}" } 23 | msg += "\nand" if extra 24 | end 25 | msg += " had extra:\n" 26 | extra.each { |k| msg += "#{k} => #{actual[k]}" } 27 | 28 | msg 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /integtest/spec/helper/matcher/initial_js_state.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ## 4 | # Matches extracts the "initial javascript state" of a templated html page. 5 | # If the page doesn't contain the initial js state it'll be `nil`. 6 | RSpec::Matchers.define :initial_js_state do |expected| 7 | match do |actual| 8 | expected.matches? extract(actual) 9 | end 10 | failure_message do 11 | "doc_body didn't match: #{expected.failure_message}" 12 | end 13 | 14 | def extract(contents) 15 | start_boundry = 'window.initial_state = ' 16 | start = contents.index start_boundry 17 | return unless start 18 | 19 | start += start_boundry.length 20 | stop = contents.index '', start 21 | return unless stop 22 | 23 | txt = contents[start, stop - start] 24 | JSON.parse txt, symbolize_names: true 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /integtest/spec/helper/matcher/redirect_to.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ## 4 | # Matches http responses. 5 | RSpec::Matchers.define :redirect_to do |expected, ecode = '301'| 6 | match do |actual| 7 | return false unless actual.code == ecode 8 | 9 | expected.matches? actual['Location'] 10 | end 11 | failure_message do |actual| 12 | unless actual.code == ecode 13 | return "expected status [#{ecode}] but was [#{actual.code}]. Body:\n" + 14 | actual.body 15 | end 16 | 17 | message = expected.failure_message 18 | "status was [#{ecode}] but the location didn't match: #{message}" 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /integtest/spec/helper/matcher/serve.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ## 4 | # Matches http responses. 5 | RSpec::Matchers.define :serve do |expected| 6 | match do |actual| 7 | return false unless actual.code == '200' 8 | 9 | expected.matches? actual.body 10 | end 11 | failure_message do |actual| 12 | unless actual.code == '200' 13 | return "expected status [200] but was [#{actual.code}]. Body:\n" + 14 | actual.body 15 | end 16 | 17 | "status was [200] but the body didn't match: #{expected.failure_message}" 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /integtest/spec/helper/opened_docs.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'open3' 4 | 5 | require_relative 'serving_docs' 6 | 7 | class OpenedDocs < ServingDocs 8 | ## 9 | # Reads the logs of the preview without updating them from the subprocess. 10 | attr_reader :logs 11 | 12 | def initialize(cmd, uses_preview) 13 | super cmd 14 | 15 | wait_for_logs(/start worker processes$/, 60) 16 | return unless uses_preview 17 | 18 | wait_for_logs(/^preview server is listening on 3000$/, 60) 19 | wait_for_logs(/ Built in /, 60) # Wait for parcel as well 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /integtest/spec/helper/preview.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'open3' 4 | 5 | require_relative 'serving_docs' 6 | 7 | class Preview < ServingDocs 8 | ## 9 | # Reads the logs of the preview without updating them from the subprocess. 10 | attr_reader :logs 11 | 12 | def initialize(bare_repo, air_gapped: false) 13 | super [ 14 | '/docs_build/build_docs.pl', '--in_standard_docker', 15 | '--preview', '--target_repo', bare_repo 16 | ].concat(air_gapped ? ['--gapped'] : []) 17 | 18 | wait_for_logs(/^preview server is listening on 3000$/, 60) 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /integtest/spec/helper/sh.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'open3' 4 | 5 | ## 6 | # Defines methods to run commands in example blocks like `it` and `before`. 7 | module Sh 8 | ## 9 | # Execute a command and return the result. Use this to execute commands in 10 | # `before` sections to prepare the environment to test. 11 | def sh(cmd) 12 | out, status = Open3.capture2e cmd 13 | raise_status cmd, out, status unless status.success? 14 | 15 | out 16 | end 17 | 18 | ## 19 | # Raise an exception based on a return status. 20 | def raise_status(cmd, out, status) 21 | outmsg = out == '' ? '' : " with stdout/stderr:\n#{out}" 22 | raise "#{status.exitstatus} [#{cmd}] returned [#{status}]#{outmsg}" 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /jest.js: -------------------------------------------------------------------------------- 1 | var jQuery = require("jquery"); 2 | window.$ = window.jQuery = jQuery; 3 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "license": "SEE LICENSE IN README.asciidoc", 3 | "devDependencies": { 4 | "jest": "^24.8.0", 5 | "nock": "^10.0.6", 6 | "rmfr": "^2.0.0" 7 | }, 8 | "scripts": { 9 | "test": "jest" 10 | }, 11 | "jest": { 12 | "setupFiles": [ 13 | "./jest.js" 14 | ] 15 | }, 16 | "dependencies": { 17 | "dedent": "^0.7.0", 18 | "details-polyfill": "^1.1.0", 19 | "jquery": "^1.11.3", 20 | "js-cookie": "^2.1.0", 21 | "linkstate": "^1.1.1", 22 | "parcel": "^1.12.3", 23 | "postcss-assets": "^5.0.0", 24 | "preact": "^8.4.2", 25 | "preact-context": "^1.1.3", 26 | "preact-redux": "^2.1.0", 27 | "precss": "^4.0.0", 28 | "ramda": "^0.26.1", 29 | "recursive-copy": "^2.0.10", 30 | "redux": "^4.0.4", 31 | "redux-thunk": "^2.3.0", 32 | "url-search-params-polyfill": "^8.0.0", 33 | "yargs": "^14.0.0" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /preview/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM docker.elastic.co/docs/build:latest 2 | 3 | RUN mkdir /var/log/nginx 4 | RUN mkdir -p /run/nginx 5 | 6 | # Limit the memory used by git gc so we can be good k8s citizens. 7 | RUN git config --global pack.windowMemory 500m 8 | RUN git config --global pack.deltaCacheSize 10m 9 | RUN git config --global pack.threads 1 10 | # Prevent git auto-gc from warning about too many references by increasing the 11 | # threshold of unreachable objects that triggers a prune and more aggressively 12 | # pruning those unreachable objects. While we're at it we more aggressively 13 | # prune the reflog as well. It is important to prevent corruption that we do 14 | # leave *some* grace period in all of these (see the note in docs for git gc 15 | # for more about this). 16 | RUN git config --global gc.auto 20000 17 | RUN git config --global gc.pruneExpire 1.hour.ago 18 | RUN git config --global gc.reflogExpire 1.hour.ago 19 | RUN git config --global gc.reflogExpireUnreachable 1.hour.ago 20 | 21 | COPY build_docs.pl /docs_build/ 22 | COPY conf.yaml /docs_build/ 23 | COPY lib /docs_build/lib 24 | COPY preview /docs_build/preview 25 | COPY template /docs_build/template 26 | COPY resources /docs_build/resources 27 | 28 | ENTRYPOINT ["dumb-init", "--"] 29 | CMD ["/docs_build/build_docs.pl", "--in_standard_docker", "--preview"] 30 | -------------------------------------------------------------------------------- /preview/Dockerfile.dockerignore: -------------------------------------------------------------------------------- 1 | * 2 | !build_docs.pl 3 | !conf.yaml 4 | !lib 5 | !preview 6 | !template 7 | !resources/web 8 | resources/web/.cache 9 | resources/web/tests 10 | -------------------------------------------------------------------------------- /preview/Makefile: -------------------------------------------------------------------------------- 1 | include ../common.mk 2 | 3 | .PHONY: check 4 | check: jest 5 | 6 | .PHONY: jest 7 | jest: 8 | $(DOCKER) integ_test /node_modules/jest/bin/jest.js ./__test__/** 9 | -------------------------------------------------------------------------------- /preview/buffer_itr.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license 3 | * Licensed to Elasticsearch under one or more contributor 4 | * license agreements. See the NOTICE file distributed with 5 | * this work for additional information regarding copyright 6 | * ownership. Elasticsearch licenses this file to you under 7 | * the Apache License, Version 2.0 (the "License"); you may 8 | * not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, 14 | * software distributed under the License is distributed on an 15 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 | * KIND, either express or implied. See the License for the 17 | * specific language governing permissions and limitations 18 | * under the License. 19 | */ 20 | 21 | 'use strict'; 22 | 23 | /** 24 | * Buffers an async iterator until its output is at least min characters 25 | * @param {Generator} itr async iterator that returns a string to buffer 26 | */ 27 | module.exports = async function* (itr, min) { 28 | let buffer = ""; 29 | for await (const chunk of itr) { 30 | buffer += chunk; 31 | if (buffer.length > min) { 32 | yield buffer; 33 | buffer = ""; 34 | } 35 | } 36 | if (buffer !== "") { 37 | yield buffer; 38 | } 39 | }; 40 | -------------------------------------------------------------------------------- /preview/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Build the docker image for the docs preview. 4 | 5 | set -eo pipefail 6 | 7 | export IMAGE=docker.elastic.co/docs/preview 8 | export VERSION=18 9 | 10 | cd $(git rev-parse --show-toplevel) 11 | ./build_docs --docker-build build 12 | DOCKER_BUILDKIT=1 docker build -t $IMAGE:$VERSION -f preview/Dockerfile . 13 | 14 | docker tag $IMAGE:$VERSION $IMAGE:latest 15 | 16 | # docker push $IMAGE:$VERSION 17 | # docker push $IMAGE:latest 18 | -------------------------------------------------------------------------------- /preview/test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Performs a quick and dirty local test on the preview. Because this runs as 4 | # it would in k8s you'll need to `docker kill` it when you are done. We do 5 | # have integration tests for this in integtest/spec/preview_spec.rb which are 6 | # much faster because they don't use real data but this is useful too. 7 | 8 | set -euxo pipefail 9 | 10 | cd "$(git rev-parse --show-toplevel)" 11 | ../infra/ansible/roles/git_fetch_reference/files/git-fetch-reference.sh git@github.com:elastic/built-docs.git 12 | # shellcheck source=build.sh 13 | source preview/build.sh 14 | id=$( 15 | docker run --rm \ 16 | --publish 8000:8000/tcp \ 17 | -v "$HOME/.git-references:/root/.git-references" \ 18 | -d \ 19 | docker.elastic.co/docs/preview:latest \ 20 | /docs_build/build_docs.pl --in_standard_docker \ 21 | --preview --reference /root/.git-references \ 22 | --target_repo https://github.com/elastic/built-docs.git 23 | ) 24 | echo "Started the preview. Some useful commands:" 25 | echo " docker kill $id" 26 | echo " docker logs -tf $id" 27 | echo "You should eventually be able to access:" 28 | echo " http://master.localhost:8000/guide/index.html" 29 | -------------------------------------------------------------------------------- /renderconf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | # Loads and then dumps conf.yaml, to test that changes to the conf.yaml don't lead to actual functional changes in behavior. 4 | # Usage: 5 | # ./renderconf.py > conf.before.yaml 6 | # (Make changes) 7 | # ./renderconf.py > conf.after.yaml 8 | # diff conf.before.yaml conf.after.yaml 9 | 10 | import yaml 11 | 12 | yaml.Dumper.ignore_aliases = lambda *args : True 13 | 14 | 15 | def main(): 16 | data = yaml.load(open("conf.yaml").read(), Loader=yaml.SafeLoader) 17 | print(yaml.dump(data)) 18 | 19 | if __name__ == "__main__": 20 | main() 21 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "enabled": false 4 | } 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/.rspec: -------------------------------------------------------------------------------- 1 | --format documentation 2 | --color 3 | --require spec_helper 4 | -------------------------------------------------------------------------------- /resources/asciidoctor/Makefile: -------------------------------------------------------------------------------- 1 | include ../../common.mk 2 | 3 | .PHONY: check 4 | check: rspec rubocop 5 | 6 | .PHONY: rspec 7 | rspec: 8 | $(DOCKER) ruby_test rspec 9 | 10 | .PHONY: rubocop 11 | rubocop: 12 | $(DOCKER) ruby_test rubocop 13 | -------------------------------------------------------------------------------- /resources/asciidoctor/README: -------------------------------------------------------------------------------- 1 | These are Elastic's extensions to Asciidoctor! The `lib` directory contains 2 | the actual extensions and the spec directory contains the tests. You can run 3 | the tests with `make` to reproduce the authoritative, in docker tests. You can 4 | also use more ruby standard stuff like: 5 | 6 | ``` 7 | bundle install 8 | bundle exec rspec 9 | bundle exec rubocop 10 | ``` 11 | 12 | but it is not authoritative. 13 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/alternative_language_lookup/converter.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../delegating_converter' 4 | 5 | module AlternativeLanguageLookup 6 | ## 7 | # A Converter that adds an anchor above each listing with its digest. 8 | class Converter < DelegatingConverter 9 | def convert_listing(node) 10 | return yield unless (digest = node.attr 'digest') 11 | 12 | %(\n) + yield 13 | end 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/alternative_language_lookup/report.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'json' 4 | 5 | module AlternativeLanguageLookup 6 | ## 7 | # Reports on the result of processing a lookup. 8 | class Report 9 | def self.open(path) 10 | File.open path, 'w' do |f| 11 | f.print '[' 12 | yield Report.new f 13 | f.print "]\n" 14 | end 15 | end 16 | 17 | def initialize(file) 18 | @file = file 19 | @first = true 20 | end 21 | 22 | def report(listing, found_langs) 23 | if @first 24 | @first = false 25 | else 26 | @file.print ',' 27 | end 28 | @file.print "\n" 29 | @file.print json(listing, found_langs) 30 | end 31 | 32 | def json(listing, found_langs) 33 | JSON.generate( 34 | source_location: { 35 | file: listing.source_location.path, 36 | line: listing.source_location.lineno, 37 | }, 38 | digest: listing.digest, 39 | lang: listing.lang, 40 | found: found_langs, 41 | source: listing.source 42 | ) 43 | end 44 | end 45 | end 46 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/alternative_language_lookup/summary.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'json' 4 | 5 | module AlternativeLanguageLookup 6 | ## 7 | # Summary of the alternative language listings included to be processed by 8 | # other tools. 9 | class Summary 10 | def initialize(path, lookups) 11 | @path = path 12 | @data = {} 13 | lookups.each do |source_lang, lang_lookups| 14 | @data[source_lang] = sdata = { total: 0, alternatives: {} } 15 | lang_lookups.each do |lookup| 16 | sdata[:alternatives][lookup.alternative_lang] = { found: 0 } 17 | end 18 | end 19 | end 20 | 21 | def on_listing(listing, found_langs) 22 | sdata = @data[listing.key_lang] 23 | sdata[:total] += 1 24 | adata = sdata[:alternatives] 25 | found_langs.each { |alt| adata[alt][:found] += 1 } 26 | end 27 | 28 | def save 29 | File.open @path, 'w:UTF-8' do |f| 30 | f.write JSON.pretty_generate(@data) 31 | end 32 | end 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/chunker/convert_outline.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Chunker 4 | ## 5 | # Clean up the generated outline. 6 | module ConvertOutline 7 | def convert_outline(node, opts = {}) 8 | # Fix links in the toc 9 | toclevels = opts[:toclevels] || node.document.attributes['toclevels'].to_i 10 | outline = yield 11 | cleanup_outline outline, node, toclevels 12 | outline 13 | end 14 | 15 | private 16 | 17 | def cleanup_outline(outline, node, toclevels) 18 | node.sections.each do |section| 19 | next if section.roles.include? 'exclude' 20 | 21 | outline.gsub!(%(href="##{section.id}"), %(href="#{section.id}.html")) || 22 | raise("Couldn't fix section link for #{section.id} in #{outline}") 23 | cleanup_outline outline, section, toclevels if section.level < toclevels 24 | end 25 | end 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/chunker/extra_docinfo.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../strip_tags' 4 | require_relative 'link' 5 | 6 | module Chunker 7 | ## 8 | # Adds extra tags tags to the to emulate docbook. 9 | module ExtraDocinfo 10 | include Link 11 | include StripTags 12 | 13 | def docinfo(location = :head, suffix = nil) 14 | info = super 15 | info += extra_chunker_head if location == :head 16 | info 17 | end 18 | 19 | private 20 | 21 | def extra_chunker_head 22 | [ 23 | %(), 24 | link_rel('up', attributes['up_section']), 25 | link_rel('prev', attributes['prev_section']), 26 | link_rel('next', attributes['next_section']), 27 | link_rel('canonical', attributes['canonical-url']), 28 | ].compact.join "\n" 29 | end 30 | 31 | def link_rel(rel, related) 32 | return unless related 33 | 34 | if related.is_a?(String) 35 | %() 36 | else 37 | extra = related.context == :document ? related.attr('title-extra') : '' 38 | title = "#{strip_tags(link_text(related))}#{extra}" 39 | # We're in an attribute so escape quotes too! 40 | title = title.gsub '"', '"' 41 | %() 42 | end 43 | end 44 | end 45 | end 46 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/chunker/footnotes.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Chunker 4 | ## 5 | # Generate the footnotes. 6 | module Footnotes 7 | def footnotes(doc, subdoc) 8 | return unless doc.footnotes? 9 | 10 | source = [ 11 | '
', 12 | doc.footnotes.map { |f| doc.converter.convert f, 'footnote' }, 13 | '
', 14 | ].join "\n" 15 | doc.footnotes.clear 16 | 17 | Asciidoctor::Block.new subdoc, :pass, source: source 18 | end 19 | 20 | def convert_footnote(footnote) 21 | <<~HTML.strip 22 |
23 | [#{footnote.index}] #{footnote.text} 24 |
25 | HTML 26 | end 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/chunker/link.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module Chunker 4 | ## 5 | # Helpers for making links. 6 | module Link 7 | def link_href(target) 8 | case target.context 9 | when :section 10 | %(href="#{target.id}.html") 11 | when :document 12 | %(href="index.html") 13 | else 14 | raise "Can't link to #{target}" 15 | end 16 | end 17 | 18 | def link_text(target) 19 | case target.context 20 | when :section 21 | target.captioned_title 22 | when :document 23 | target.doctitle(partition: true).main.strip 24 | else 25 | raise "Can't link to #{target}" 26 | end 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/chunker/nav.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative 'link' 4 | 5 | module Chunker 6 | ## 7 | # Generate the navigation header and footer. 8 | class Nav 9 | include Link 10 | 11 | attr_reader :header, :footer 12 | 13 | def initialize(doc) 14 | body = nav_body doc 15 | @header = Asciidoctor::Block.new(doc, :pass, source: <<~HTML) 16 | 19 | HTML 20 | @footer = Asciidoctor::Block.new(doc, :pass, source: <<~HTML) 21 | 24 | HTML 25 | end 26 | 27 | private 28 | 29 | def nav_body(doc) 30 | nav = [ 31 | %(), 32 | nav_link(doc.attr('prev_section'), '« ', ''), 33 | %(), 34 | %(), 35 | nav_link(doc.attr('next_section'), '', ' »'), 36 | %(), 37 | ] 38 | nav.compact.join "\n" 39 | end 40 | 41 | def nav_link(section, lmarker, rmarker) 42 | return unless section 43 | # section could be the document itself which shouldn't render. 44 | return unless section.context == :section 45 | 46 | %(#{lmarker}#{link_text section}#{rmarker}) 47 | end 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/cramped_include/extension.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'asciidoctor/extensions' 4 | 5 | ## 6 | # Preprocessor to support more "cramped" include statements. Usually something 7 | # like 8 | # include::resources/1.adoc[] 9 | # include::resources/2.adoc[] 10 | # will result in syntax errors if 1.adoc ends in only a single new line. Things 11 | # like callout lists require that they be followed by an empty line or else 12 | # the thing below them will get sucked into the callout list. This isn't a 13 | # problem with asciidoc, and to be better compatible with it try and work around 14 | # this problem by adding an extra new line after every sequence of lines we 15 | # include. In theory this *shouldn't* bother us because we don't include things 16 | # that are sensitive to the extra line. 17 | # 18 | class CrampedInclude < Asciidoctor::Extensions::Preprocessor 19 | def process(_document, reader) 20 | def reader.prepare_lines(data, opts = {}) 21 | # The + here is important because it makes the string mutable which is 22 | # required by asciidoctor's reader in general and our compatibility 23 | # preprocessor specifically. 24 | super << +'' 25 | end 26 | reader 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/delegating_converter.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ## 4 | # Abstract base for implementing a converter that implements some conversions 5 | # and delegates the rest to the "next" converter. 6 | class DelegatingConverter 7 | ## 8 | # Setup a converter on a document. 9 | def self.setup(document) 10 | converter = yield document.converter 11 | document.instance_variable_set :@converter, converter 12 | end 13 | 14 | def initialize(delegate) 15 | @delegate = delegate 16 | end 17 | 18 | def convert(node, transform = node.node_name, opts = nil) 19 | # The behavior of this method mirrors Asciidoctor::Base.convert 20 | t = "convert_#{transform}" 21 | if respond_to? t 22 | send t, node do 23 | # Passes a block that subclasses can call to run the converter chain. 24 | @delegate.convert node, transform, opts 25 | end 26 | else 27 | @delegate.convert node, transform, opts 28 | end 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/docbook_compat/clear_cached_titles.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../scaffold' 4 | 5 | module DocbookCompat 6 | ## 7 | # Clears the internal cache of the title's conversion on sections that look 8 | # like they have generated ids. This is because when we generate ids we 9 | # convert titles differently. 10 | class ClearCachedTitles < TreeProcessorScaffold 11 | def process_block(block) 12 | return unless %i[section floating_title].include? block.context 13 | return unless block.id&.start_with?(block.attr('idprefix') || '_') 14 | 15 | block.instance_variable_set :@converted_title, nil 16 | end 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/docbook_compat/convert_example.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module DocbookCompat 4 | ## 5 | # Methods to convert example blocks. 6 | module ConvertExample 7 | def convert_example(node) 8 | return yield unless node.title 9 | return yield if node.option? 'collapsible' 10 | 11 | [ 12 | '
', 13 | %(

#{node.captioned_title}

), 14 | '
', 15 | node.content, 16 | '
', 17 | '
', 18 | ].compact.join "\n" 19 | end 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/docbook_compat/convert_floating_title.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module DocbookCompat 4 | ## 5 | # Methods to convert floating titles. 6 | module ConvertFloatingTitle 7 | def convert_floating_title(node) 8 | tag_name = %(h#{node.level + 1}) 9 | [ 10 | '
', 11 | '<', tag_name, node.role ? %( class="#{node.role}") : nil, '>', 12 | node.id ? %() : nil, 13 | node.title, 14 | xpack_tag(node), 15 | '', 16 | node.attr('edit_me_link', ''), 17 | '
' 18 | ].compact.join 19 | end 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/docbook_compat/convert_inline_quoted.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module DocbookCompat 4 | ## 5 | # Methods to convert "inline quoted" which is mostly markup. 6 | module ConvertInlineQuoted 7 | def convert_inline_quoted(node, &block) 8 | [ 9 | convert_inline_quoted_main(node, &block), 10 | xpack_tag(node), 11 | ].compact.join 12 | end 13 | 14 | private 15 | 16 | def convert_inline_quoted_main(node) 17 | case node.type 18 | when :monospaced 19 | node.attributes['role'] ||= 'literal' 20 | yield 21 | when :strong 22 | # Docbook's "strong" rendering is comically repetitive..... 23 | %(#{node.text}) 24 | else 25 | yield 26 | end 27 | end 28 | end 29 | end 30 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/docbook_compat/convert_open.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module DocbookCompat 4 | ## 5 | # Methods to convert open blocks. 6 | module ConvertOpen 7 | def convert_open(node) 8 | # If the open block is *totally* unadorned then it is entirely invisible. 9 | return yield unless node.style == 'open' 10 | return yield if node.id 11 | return yield if node.title? 12 | 13 | node.content 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/docbook_compat/convert_paragraph.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module DocbookCompat 4 | ## 5 | # Methods to convert paragraphs. 6 | module ConvertParagraph 7 | def convert_paragraph(node) 8 | # Asciidoctor adds a \n at the end of the paragraph so we don't. 9 | [ 10 | node.role ? %(

) : '

', 11 | paragraph_id_part(node), 12 | paragraph_title_part(node), 13 | node.content, 14 | '

', 15 | ].compact.join 16 | end 17 | 18 | def paragraph_id_part(node) 19 | return if node.id.nil? || node.id.empty? 20 | 21 | %() 22 | end 23 | 24 | def paragraph_title_part(node) 25 | return unless node.title 26 | 27 | "#{node.title}" 28 | end 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/docbook_compat/convert_quote.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module DocbookCompat 4 | ## 5 | # Methods to convert quotes. 6 | module ConvertQuote 7 | def convert_quote(node) 8 | return convert_fancy_quote node if node.attr 'attribution' 9 | 10 | yield 11 | end 12 | 13 | def convert_fancy_quote(node) 14 | [ 15 | '
', 16 | '', 17 | convert_quote_row(node), 18 | convert_attribution_row(node), 19 | '
', 20 | '
', 21 | ].compact.join "\n" 22 | end 23 | 24 | private 25 | 26 | def convert_quote_row(node) 27 | [ 28 | '', 29 | '', 30 | '', 31 | node.content, 32 | '', 33 | '', 34 | '', 35 | ] 36 | end 37 | 38 | def convert_attribution_row(node) 39 | [ 40 | '', 41 | '', 42 | '', 43 | %(-- #{node.attr 'attribution'}), 44 | '', 45 | '', 46 | ] 47 | end 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/docbook_compat/convert_sidebar.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module DocbookCompat 4 | ## 5 | # Methods to convert lists. 6 | module ConvertSidebar 7 | def convert_sidebar(node) 8 | [ 9 | %(
), 10 | node.id ? %() : nil, 11 | node.document.converter.convert(node, 'sidebar_title'), 12 | node.content, 13 | '
', 14 | ].compact.join "\n" 15 | end 16 | 17 | def convert_sidebar_title(node) 18 | return '
' unless node.title 19 | 20 | [ 21 | '
', 22 | %(

#{node.title}

), 23 | %(
), 24 | ].join "\n" 25 | end 26 | end 27 | end 28 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/docbook_compat/convert_table_cell.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module DocbookCompat 4 | ## 5 | # Methods to convert table cells. 6 | module ConvertTableCell 7 | def convert_table_cell(cell, data_tag, allow_formatting) 8 | result = [convert_cell_open(cell, data_tag)] 9 | result << convert_cell_content(cell, allow_formatting) 10 | result << '' 11 | result.join 12 | end 13 | 14 | def convert_cell_open(cell, data_tag) 15 | [ 16 | '<', 17 | data_tag, 18 | ' ', 19 | cell_open_attrs(cell).map { |k, v| %(#{k}="#{v}") }.join(' '), 20 | '>', 21 | ].join 22 | end 23 | 24 | def cell_open_attrs(cell) 25 | { 26 | align: cell.attr('halign'), 27 | colspan: cell.colspan == 1 ? nil : cell.colspan, 28 | rowspan: cell.rowspan == 1 ? nil : cell.rowspan, 29 | valign: cell.attr('valign'), 30 | }.compact 31 | end 32 | 33 | def convert_cell_content(cell, allow_formatting) 34 | if cell.inner_document 35 | ["\n", cell.content, "\n"].join 36 | elsif allow_formatting 37 | cell_text cell 38 | else 39 | cell.text 40 | end 41 | end 42 | 43 | def cell_text(cell) 44 | cell.style = :strong if cell.style == :header 45 | "

#{cell.content.join "

\n

"}

" 46 | end 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/docbook_compat/titleabbrev_handler.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../scaffold' 4 | 5 | module DocbookCompat 6 | ## 7 | # Looks for pass blocks with `` and adds an attributes to their 8 | # parent section. This attribute is an abbreviated title used when rendering 9 | # the table of contents. This exists entirely for backwards compatibility with 10 | # docbook. It is simpler and recommended to set the `reftext` attribute. 11 | class TitleabbrevHandler < TreeProcessorScaffold 12 | def process_block(block) 13 | return unless block.context == :pass 14 | 15 | process_pass block 16 | end 17 | 18 | def process_pass(block) 19 | text = block.lines.join "\n" 20 | return unless (m = text.match %r{([^<]+)\n?}m) 21 | 22 | text.slice! m.begin(0), m.end(0) 23 | block.lines = text.split "\n" 24 | process_titleabbrev block, m[1] 25 | end 26 | 27 | private 28 | 29 | def process_titleabbrev(block, reftext) 30 | reftext = block.apply_subs reftext, [:attributes] 31 | section = block.parent 32 | section = section.parent until section.context == :section 33 | # Docbook seems to bold links to sections less than 2 so we should too. 34 | reftext = "_#{reftext}_" if section.level < 2 35 | section.attributes['reftext'] = reftext 36 | end 37 | end 38 | end 39 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/glob_include_processor/extension.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'asciidoctor/extensions' 4 | ## 5 | # Include multiple files in a directory using globbing 6 | class GlobIncludeProcessor < Asciidoctor::Extensions::IncludeProcessor 7 | def process(_doc, reader, target_glob, attributes) 8 | Dir[File.join reader.dir, target_glob].sort.reverse_each do |target| 9 | content = IO.readlines target 10 | content.unshift '' unless attributes['adjoin-option'] 11 | reader.push_include content, target, target, 1, attributes 12 | end 13 | reader 14 | end 15 | 16 | def handles?(target) 17 | target.include? '*' 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/lang_override/extension.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ## 4 | # Block macro that exists entirely to mark language overrides in a clean way 5 | # without adding additional lines to the input file which would throw off 6 | # line numbers. 7 | # 8 | class LangOverride < Asciidoctor::Extensions::BlockMacroProcessor 9 | use_dsl 10 | named :lang_override 11 | name_positional_attributes :override 12 | 13 | def process(parent, _target, attrs) 14 | Asciidoctor::Block.new(parent, :pass, source: "// #{attrs[:override]}") 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/log_util.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'asciidoctor/logging' 4 | 5 | ## 6 | # Utilities for logging in a way that makes asciidoctor happy. 7 | module LogUtil 8 | include Asciidoctor::Logging 9 | 10 | def error(location: nil, block: nil, message:) 11 | location ||= block&.source_location 12 | logger.error message_with_context message, source_location: location 13 | end 14 | 15 | def warn(location: nil, block: nil, message:) 16 | location ||= block&.source_location 17 | logger.warn message_with_context message, source_location: location 18 | end 19 | 20 | def info(location: nil, block: nil, message:) 21 | location ||= block&.source_location 22 | logger.info message_with_context message, source_location: location 23 | end 24 | end 25 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/migration_log.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'asciidoctor/extensions' 4 | 5 | ## 6 | # Infrastructure for logging migration warnings. 7 | module MigrationLog 8 | include Asciidoctor::Logging 9 | 10 | ## 11 | # Emit a migration warning if migration warnings are enabled overall and if 12 | # this particular migration warning is enabled. 13 | def migration_warn(block, cursor, key, message) 14 | # TODO: playback_attributes will almost never work propery. We should remove 15 | # this *somehow* 16 | # We have to play the block's attributes against the document, then clear 17 | # them on the way out so we can override this behavior inside a block. 18 | doc = block.document 19 | doc.playback_attributes block.attributes 20 | return unless doc.attr('migration-warnings', 'true') == 'true' 21 | return unless doc.attr("migration-warning-#{key}", 'true') == 'true' 22 | 23 | logger.warn message_with_context "MIGRATION: #{message}", 24 | source_location: cursor 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/relativize_link/extension.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'asciidoctor/extensions' 4 | require_relative '../delegating_converter' 5 | 6 | ## 7 | # Converts absolute links to some url root into relative links. 8 | module RelativizeLink 9 | def self.activate(registry) 10 | DelegatingConverter.setup(registry.document) do |doc| 11 | Converter.new doc 12 | end 13 | end 14 | 15 | ## 16 | # Converter implementation that does the conversion. 17 | class Converter < DelegatingConverter 18 | def convert_inline_anchor(node) 19 | modify node 20 | yield 21 | end 22 | 23 | def modify(node) 24 | return unless node.type == :link 25 | return unless (root = node.document.attr 'relativize-link') 26 | return unless node.target.start_with? root 27 | 28 | node.target = '/' + node.target[root.length..node.target.length] 29 | end 30 | end 31 | end 32 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/scaffold.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'asciidoctor/extensions' 4 | 5 | ## 6 | # Scaffolding for TreeProcessor extensions to automatically iterate. 7 | # 8 | class TreeProcessorScaffold < Asciidoctor::Extensions::TreeProcessor 9 | def process_block(_document) 10 | raise ::NotImplementedError, 11 | %(#{self.class} subclass must implement ##{__method__} method) 12 | end 13 | 14 | def process(document) 15 | backup = document.attributes.dup 16 | process_blocks document 17 | document.attributes.replace backup 18 | nil 19 | end 20 | 21 | def process_blocks(block) 22 | unless block.document == block 23 | block.document.playback_attributes block.attributes 24 | end 25 | process_block block 26 | sub_blocks(block).each do |sub_block| 27 | # sub_block can be nil for definition lists without a definition. 28 | # this is weird, but it is safe to skip nil here because subclasses 29 | # can't change it anyway. 30 | process_blocks sub_block if sub_block 31 | end 32 | end 33 | 34 | def sub_blocks(block) 35 | if block.context == :dlist 36 | # If there isn't a definition then the list can have a nil. So we compact. 37 | block.blocks.flatten.compact 38 | else 39 | # Dup so modifications to the list don't cause us to reprocess 40 | block.blocks.dup 41 | end 42 | end 43 | end 44 | -------------------------------------------------------------------------------- /resources/asciidoctor/lib/strip_tags.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ## 4 | # Strips tags from html. 5 | module StripTags 6 | def strip_tags(html) 7 | return unless html 8 | 9 | # Remove inline admonitions. This is kind of a lame way to do it but 10 | # Asciidoctor doesn't give us a better way. 11 | html = html.gsub(%r{ 12 | \n 16 | 17 | }xm, '') 18 | # Comment to fix up syntax highlighting "HTML 19 | html.gsub(/<[^>]*>/, '').squeeze(' ').strip 20 | end 21 | end 22 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/relativize_link_spec.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require 'relativize_link/extension' 4 | 5 | RSpec.describe RelativizeLink do 6 | before(:each) do 7 | Asciidoctor::Extensions.register RelativizeLink 8 | end 9 | 10 | after(:each) do 11 | Asciidoctor::Extensions.unregister_all 12 | end 13 | 14 | context 'when not configured' do 15 | include_context 'convert without logs' 16 | let(:input) { 'https://www.elastic.co/guide/foo[foo]' } 17 | it "doesn't do anything" do 18 | expect(converted).to include <<~HTML.strip 19 | foo 20 | HTML 21 | end 22 | end 23 | context 'when configured' do 24 | include_context 'convert without logs' 25 | let(:convert_attributes) do 26 | { 'relativize-link' => 'https://www.elastic.co/' } 27 | end 28 | context 'when the url matches' do 29 | let(:input) { 'https://www.elastic.co/guide/foo[foo]' } 30 | it 'relativizes the link' do 31 | expect(converted).to include <<~HTML.strip 32 | foo 33 | HTML 34 | end 35 | end 36 | context "when the url doesn't match" do 37 | let(:input) { 'https://not.elastic.co/guide/foo[foo]' } 38 | it "doesn't do anything" do 39 | expect(converted).to include <<~HTML.strip 40 | foo 41 | HTML 42 | end 43 | end 44 | end 45 | end 46 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/csharp/2daa97b0218b60aec4714333e80d7e84.adoc: -------------------------------------------------------------------------------- 1 | [source,csharp] 2 | ---- 3 | include::included.cs[tag=example] 4 | ---- 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/csharp/5712902c12d9db15d01e8639ece9ec84.adoc: -------------------------------------------------------------------------------- 1 | [source,csharp] 2 | ---- 3 | Console.WriteLine("all alternatives"); 4 | ---- 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/csharp/9e01493a85c06a5100ff712f6b3eead4.adoc: -------------------------------------------------------------------------------- 1 | [source,csharp] 2 | ---- 3 | Console.WriteLine("there are callouts"); <1> <2> 4 | ---- 5 | <1> csharp a 6 | <2> csharp b 7 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/csharp/cf49fef4c762241eee0fa3d1e7fa8b58.adoc: -------------------------------------------------------------------------------- 1 | [source,csharp] 2 | ---- 3 | var searchResponse = _client.Search(s => s 4 | .Query(q => q 5 | .QueryString(m => m 6 | .Query("foo bar") 7 | ) 8 | ) 9 | ); 10 | ---- 11 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/csharp/ded0ba409b7c66489d5833dc6aa5f696.adoc: -------------------------------------------------------------------------------- 1 | [source,csharp] 2 | ---- 3 | include::missing.adoc[] 4 | ---- -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/csharp/fcac4757ba45b9b14f316eb9bda58584.adoc: -------------------------------------------------------------------------------- 1 | [source,not_csharp] 2 | ---- 3 | Console.WriteLine("bad language"); 4 | ---- 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/csharp/included.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | namespace Included 3 | { 4 | class Hello 5 | { 6 | static void Main() 7 | { 8 | // tag::example[] 9 | Console.WriteLine("Hello World!"); 10 | // end::example[] 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/csharp/subdir/35f7386b82f3d924b7bfffa26470ac81.adoc: -------------------------------------------------------------------------------- 1 | [source,csharp] 2 | ---- 3 | Console.WriteLine("In subdir"); 4 | ---- 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/java/5712902c12d9db15d01e8639ece9ec84.adoc: -------------------------------------------------------------------------------- 1 | [source,java] 2 | ---- 3 | System.out.println("all alternatives"); 4 | ---- -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/js/39f76498cca438ba11af18a7075d24c9.adoc: -------------------------------------------------------------------------------- 1 | [source,js] 2 | ---- 3 | console.info('just js alternative'); 4 | ---- 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/js/5712902c12d9db15d01e8639ece9ec84.asciidoc: -------------------------------------------------------------------------------- 1 | [source,js] 2 | ---- 3 | console.info('all alternatives'); 4 | ---- 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/alternative_language_lookup/js/c4f54085e4784ead2ef4a758d03edd16.adoc: -------------------------------------------------------------------------------- 1 | [source,js-result] 2 | ---- 3 | 'just js result' 4 | ---- 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/example1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/example1.png -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/example2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/example2.png -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/callouts/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/callouts/1.gif -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/callouts/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/callouts/1.png -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/callouts/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/callouts/2.gif -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/callouts/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/callouts/2.png -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/caution.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/caution.gif -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/caution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/caution.png -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/important.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/important.gif -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/important.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/important.png -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/note.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/note.gif -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/note.png -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/tip.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/tip.gif -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/tip.png -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/warning.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/warning.gif -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/copy_images/images/icons/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/asciidoctor/spec/resources/copy_images/images/icons/warning.png -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/cramped_include/Example.java: -------------------------------------------------------------------------------- 1 | public class Example {} 2 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/cramped_include/colist1.adoc: -------------------------------------------------------------------------------- 1 | [[P1]] 2 | === P1 3 | 4 | [[P1_1]] 5 | ==== P1.1 6 | 7 | ["source","java",subs="attributes,callouts,macros"] 8 | -------------------------------------------------- 9 | words <1> <2> 10 | -------------------------------------------------- 11 | <1> foo 12 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/cramped_include/colist2.adoc: -------------------------------------------------------------------------------- 1 | [[P2]] 2 | === P2 3 | 4 | [[P2_1]] 5 | ==== P2.1 6 | 7 | ["source","java",subs="attributes,callouts,macros"] 8 | -------------------------------------------------- 9 | words <1> <2> 10 | -------------------------------------------------- 11 | <1> foo -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/does_not_break_line_numbers/missing_callout.adoc: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | <1> callout 4 | 5 | This line is required or asciidoctor screws up the error reporting. 6 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/appendix1.adoc: -------------------------------------------------------------------------------- 1 | [appendix] 2 | == Appendix 1 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/appendix2.adoc: -------------------------------------------------------------------------------- 1 | [appendix] 2 | == Appendix 2 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/bibliography1.adoc: -------------------------------------------------------------------------------- 1 | [bibliography] 2 | == Bibliography 1 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/bibliography2.adoc: -------------------------------------------------------------------------------- 1 | [bibliography] 2 | == Bibliography 2 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/chapter1.adoc: -------------------------------------------------------------------------------- 1 | == Chapter 1 2 | 3 | Words. 4 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/chapter2.adoc: -------------------------------------------------------------------------------- 1 | == Chapter 2 2 | 3 | Words. -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/colophon1.adoc: -------------------------------------------------------------------------------- 1 | [colophon] 2 | == Colophon 1 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/colophon2.adoc: -------------------------------------------------------------------------------- 1 | [colophon] 2 | == Colophon 2 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/dedication1.adoc: -------------------------------------------------------------------------------- 1 | [dedication] 2 | == Dedication 1 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/dedication2.adoc: -------------------------------------------------------------------------------- 1 | [dedication] 2 | == Dedication 2 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/float1.adoc: -------------------------------------------------------------------------------- 1 | [float] 2 | === Float 1 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/float2.adoc: -------------------------------------------------------------------------------- 1 | [float] 2 | === Float 2 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/glossary1.adoc: -------------------------------------------------------------------------------- 1 | [glossary] 2 | == Glossary 1 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/glossary2.adoc: -------------------------------------------------------------------------------- 1 | [glossary] 2 | == Glossary 2 3 | 4 | Words. 5 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/section1.adoc: -------------------------------------------------------------------------------- 1 | === Section 1 2 | 3 | Words. 4 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/edit_me/section2.adoc: -------------------------------------------------------------------------------- 1 | === Section 2 2 | 3 | Words. 4 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/elastic_compat_preprocessor/target.adoc: -------------------------------------------------------------------------------- 1 | = Target 2 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/resources/elastic_include_tagged/Example.java: -------------------------------------------------------------------------------- 1 | 2 | public class Example { 3 | public void doThings() { 4 | // tag::t1 5 | System.err.println("I'm an example"); 6 | for (int i = 0; i < 10; i++) { 7 | System.err.println(i); // <1> 8 | } 9 | // end::t1 10 | 11 | // tag::t2 12 | System.err.println("I'm another example"); 13 | // end::t2 14 | 15 | // tag::empty 16 | // end::empty 17 | 18 | //tag::no_leading_space 19 | System.err.println("no leading space"); 20 | //end::no_leading_space 21 | 22 | // tag::empty_line 23 | System.err.println("empty list after this one"); 24 | 25 | System.err.println("and before this one"); 26 | // end::empty_line 27 | 28 | // end::missing_start 29 | 30 | // tag::missing_end 31 | System.err.println("this tag doesn't have any end"); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/shared_examples/does_not_break_line_numbers.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | RSpec.shared_examples "doesn't break line numbers" do 4 | context "doesn't break line numbers" do 5 | include_context 'convert with logs' 6 | context 'when there is an error in the main asciidoc file' do 7 | let(:input) do 8 | <<~ASCIIDOC 9 | --- 10 | --- 11 | <1> callout 12 | ASCIIDOC 13 | end 14 | it 'reports the right line for the error' do 15 | expect(logs).to eq('WARN: : line 3: no callout found for <1>') 16 | end 17 | end 18 | 19 | context 'when there is an error in an included file' do 20 | let(:included) do 21 | 'resources/does_not_break_line_numbers/missing_callout.adoc' 22 | end 23 | let(:input) { "include::#{included}[]" } 24 | let(:expected) { "WARN: #{included}: line 3: no callout found for <1>" } 25 | it 'reports the right line for the error' do 26 | expect(logs).to eq(expected) 27 | end 28 | end 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/snippets/snippet.console: -------------------------------------------------------------------------------- 1 | GET / 2 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/snippets/snippet.ece: -------------------------------------------------------------------------------- 1 | GET / 2 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/snippets/snippet.ess: -------------------------------------------------------------------------------- 1 | GET / 2 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/snippets/snippet.kibana: -------------------------------------------------------------------------------- 1 | GET /api/security/role/my_kibana_role 2 | -------------------------------------------------------------------------------- /resources/asciidoctor/spec/snippets/snippet.sense: -------------------------------------------------------------------------------- 1 | GET / 2 | -------------------------------------------------------------------------------- /resources/readme/cat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/readme/cat.jpg -------------------------------------------------------------------------------- /resources/readme/chunking-toc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/readme/chunking-toc.png -------------------------------------------------------------------------------- /resources/readme/example.svg: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | SVG 12 | -------------------------------------------------------------------------------- /resources/readme/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/readme/screenshot.png -------------------------------------------------------------------------------- /resources/style/Makefile: -------------------------------------------------------------------------------- 1 | include ../../common.mk 2 | 3 | .PHONY: check 4 | check: rubocop 5 | 6 | .PHONY: rubocop 7 | rubocop: 8 | $(DOCKER) ruby_test rubocop 9 | -------------------------------------------------------------------------------- /resources/style/pretend_regexp_isnt_mutable.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | module RuboCop 4 | module AST 5 | # Patches rubocop's Node so it considers regexps immutable. They already 6 | # are *mostly* immutable and we find it more idiomatic to pretend that 7 | # they are actually immutable. 8 | class Node 9 | MUTABLE_LITERALS = remove_const(:MUTABLE_LITERALS) - [:regexp] 10 | remove_const :IMMUTABLE_LITERALS 11 | IMMUTABLE_LITERALS = (LITERALS - MUTABLE_LITERALS).freeze 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /resources/test/Makefile: -------------------------------------------------------------------------------- 1 | include ../../common.mk 2 | 3 | .PHONY: check 4 | check: rubocop 5 | 6 | .PHONY: rubocop 7 | rubocop: 8 | $(DOCKER) ruby_test rubocop 9 | -------------------------------------------------------------------------------- /resources/test/dsl/file_context.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require_relative '../matcher/file_exist' 4 | 5 | ## 6 | # Create a context to assert things about a file. By default it just 7 | # asserts that the file was created but if you pass a block you can add 8 | # assertions on `contents`. 9 | # IMPORTANT: This requires a function to be in scope named `dest_file` that 10 | # resolves the file name into the file's path. 11 | def file_context(name, file_name = name, &block) 12 | context "for #{name}" do 13 | include_context 'Dsl_file', file_name 14 | 15 | # Yield to the block to add more tests. 16 | class_exec(&block) if block 17 | end 18 | end 19 | RSpec.shared_context 'Dsl_file' do |file_name| 20 | let(:file) do 21 | dest_file file_name 22 | end 23 | let(:contents) do 24 | File.open file, 'r:UTF-8', &:read if File.exist? file 25 | end 26 | 27 | it 'is created' do 28 | expect(file).to file_exist 29 | end 30 | end 31 | -------------------------------------------------------------------------------- /resources/test/matcher/file_exist.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | ## 4 | # Match paths that refer to an existing file. 5 | # Prefer this instead of `expect(File).to exist('path')` because the failure 6 | # message is worlds better. 7 | RSpec::Matchers.define :file_exist do 8 | match do |actual| 9 | File.exist? actual 10 | end 11 | failure_message do |actual| 12 | msg = "expected that #{actual} exists" 13 | parent = File.expand_path '..', actual 14 | parent = File.expand_path '..', parent until Dir.exist? parent 15 | 16 | entries = Dir.entries(parent).reject { |e| e.start_with? '.' } 17 | msg + " but only #{parent}/#{entries.sort} exist" 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /resources/web/Makefile: -------------------------------------------------------------------------------- 1 | include ../../common.mk 2 | 3 | .PHONY: check 4 | check: jest 5 | 6 | .PHONY: jest 7 | jest: tests 8 | $(DOCKER) node_test /node_modules/jest/bin/jest.js ./tests/** ./__test__/** 9 | 10 | .PHONY: tests 11 | tests: 12 | rm -rf tests 13 | $(DOCKER) node_test /node_modules/parcel/bin/cli.js build ./docs_js/__tests__/**/* ./docs_js/__tests__/* -d ./tests/ --target node --no-minify --no-source-maps 14 | -------------------------------------------------------------------------------- /resources/web/docs_js/__tests__/actions/modal.test.js: -------------------------------------------------------------------------------- 1 | import * as actions from "../../actions/modal"; 2 | import store from "../../store"; 3 | 4 | describe("Modal actions", () => { 5 | const db = store(); 6 | 7 | test("closed by default", () => { 8 | expect(db.getState().modal.isOpen).toBe(false); 9 | }); 10 | 11 | test("OpenModal sets isOpen to true", () => { 12 | db.dispatch(actions.openModal()); 13 | expect(db.getState().modal.isOpen).toEqual(true); 14 | }); 15 | 16 | test("CloseModal sets isOpen to false", () => { 17 | db.dispatch(actions.closeModal()); 18 | expect(db.getState().modal.isOpen).toEqual(false); 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /resources/web/docs_js/__tests__/actions/settings.test.js: -------------------------------------------------------------------------------- 1 | import Cookies from "../../../../../../node_modules/js-cookie"; 2 | import * as actions from "../../actions/settings"; 3 | import store from "../../store"; 4 | 5 | describe("saveSettings", () => { 6 | const db = store({modal: {isOpen: true}}); 7 | 8 | test("the modal is open", () => { 9 | expect(db.getState().modal.isOpen).toBe(true); 10 | }); 11 | 12 | test("it converts a map to list of tuples", () => { 13 | const setCookies = jest.fn(); 14 | const saveSettings = actions._saveSettings(setCookies); 15 | db.dispatch(saveSettings({ 16 | console_url: "c", 17 | language: "en" 18 | })); 19 | 20 | expect(setCookies).toHaveBeenCalledWith([["console_url", "c"], ["language", "en"]]); 21 | }); 22 | 23 | test("it updates the store", () => { 24 | const settings = db.getState().settings; 25 | expect(settings).toEqual({ 26 | console_url: "c", 27 | language: "en" 28 | }); 29 | }); 30 | 31 | test("it closes the modal", () => { 32 | expect(db.getState().modal.isOpen).toBe(false); 33 | }); 34 | }); 35 | 36 | describe("setCookies", () => { 37 | test("it iterates and saves cookies", () => { 38 | actions.setCookies([["a", "b"], ["c", "d"]]); 39 | 40 | expect(Cookies.get("a")).toBe("b"); 41 | expect(Cookies.get("c")).toBe("d"); 42 | }); 43 | }); 44 | -------------------------------------------------------------------------------- /resources/web/docs_js/__tests__/components/modal.test.js: -------------------------------------------------------------------------------- 1 | import {newStore} from "../../store"; 2 | import {mount} from "../../components/mount"; 3 | import Modal from "../../components/modal"; 4 | 5 | describe("Modal component", () => { 6 | let div; 7 | beforeAll(() => { 8 | div = document.createElement('div'); 9 | }); 10 | 11 | afterEach(() => { 12 | div.innerHTML = ''; 13 | }); 14 | 15 | test("it's hidden when modal.isOpen is false", () => { 16 | const db = newStore({modal: {isOpen: false}}); 17 | mount({el: div, Component: Modal, store: db}); 18 | const el = div.querySelector("#settings_modal_bg"); 19 | expect(el).toBe(null); 20 | }); 21 | 22 | test("it's shown when modal.isOpen is true", () => { 23 | const db = newStore({modal: {isOpen: true}}); 24 | mount({el: div, Component: Modal, store: db}); 25 | const el = div.querySelector("#settings_modal_bg"); 26 | 27 | expect(el).not.toBeNull(); 28 | }); 29 | 30 | test("Clicking close, closes the modal", () => { 31 | const db = newStore({modal: {isOpen: true}}); 32 | mount({el: div, Component: Modal, store: db}); 33 | const el = div.querySelector(".settings_modal-close"); 34 | 35 | el.click(); 36 | 37 | setTimeout(() => { 38 | const final = div.querySelector("#settings_modal_bg"); 39 | expect(final).toBe(null); 40 | }, 1); 41 | }); 42 | }); 43 | -------------------------------------------------------------------------------- /resources/web/docs_js/__tests__/components/mount.test.js: -------------------------------------------------------------------------------- 1 | import {h} from "../../../../../../node_modules/preact"; 2 | import {connect} from "../../../../../../node_modules/preact-redux"; 3 | import {newStore} from "../../store"; 4 | import {mount} from "../../components/mount"; 5 | 6 | const Component = connect(state => ({ 7 | msg: state.settings.msg 8 | }))(props =>

{props.msg}

); 9 | 10 | describe("Mount component", () => { 11 | let div; 12 | beforeAll(() => { 13 | div = document.createElement('div'); 14 | }); 15 | 16 | afterEach(() => { 17 | div.innerHTML = ''; 18 | }); 19 | 20 | test("Wraps the component in a store provider", () => { 21 | const db = newStore({settings: {msg: "Hello"}}); 22 | mount({el: div, Component, store: db}); 23 | const el = div.querySelector("h1").innerHTML; 24 | expect(el).toBe("Hello"); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /resources/web/docs_js/__tests__/localization.test.js: -------------------------------------------------------------------------------- 1 | import * as l from "../localization"; 2 | import * as R from "../../../../../node_modules/ramda"; 3 | 4 | describe("Localization of strings", () => { 5 | const specs = R.toPairs(l.lang_spec); 6 | 7 | R.forEach(([phrase, {zh_cn, en}]) => { 8 | const expectedEn = en ? en : phrase; 9 | 10 | test(`Correct Chinese translation of the phrase ${phrase}`, () => { 11 | expect(l.lang_strings("zh_cn")(phrase)).toEqual(zh_cn); 12 | }); 13 | 14 | test(`Correct English translation of the phrase ${phrase}`, () => { 15 | expect(l.lang_strings("en")(phrase)).toEqual(expectedEn); 16 | }); 17 | }, specs); 18 | 19 | test("It throws an error for unrecognized phrases", () => { 20 | expect(() => l.lang_strings("en")("not found")).toThrow(Error); 21 | }); 22 | 23 | test("It throws an error for a language entry for phrase", () => { 24 | expect(() => l.lang_strings("fr")("Save")).toThrow(Error); 25 | }); 26 | }); 27 | -------------------------------------------------------------------------------- /resources/web/docs_js/actions/index.js: -------------------------------------------------------------------------------- 1 | import {combineReducers} from "../../../../../node_modules/redux"; 2 | import {reducer as settingsReducer} from "./settings"; 3 | import {reducer as modalReducer} from "./modal"; 4 | 5 | export default combineReducers({ 6 | alternatives: (state = null, _action) => state, 7 | settings: settingsReducer, 8 | modal: modalReducer 9 | }) 10 | -------------------------------------------------------------------------------- /resources/web/docs_js/actions/modal.js: -------------------------------------------------------------------------------- 1 | import {dissoc} from "../../../../../node_modules/ramda"; 2 | 3 | const initialState = {isOpen: false, Component: null, props: null}; 4 | 5 | const SET_MODAL = "SET_MODAL_VALUE"; 6 | 7 | export const setModal = ({isOpen, Component, props}) => ({type: SET_MODAL, isOpen, Component, props}); 8 | export const openModal = (Component, props) => setModal({isOpen: true, Component, props}); 9 | export const closeModal = () => setModal({isOpen: false}); 10 | 11 | export const reducer = (state = initialState, action) => { 12 | switch (action.type) { 13 | case SET_MODAL: 14 | return action.isOpen ? dissoc("type", action) : initialState; 15 | default: 16 | return state; 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /resources/web/docs_js/actions/settings.js: -------------------------------------------------------------------------------- 1 | import Cookies from "../../../../../node_modules/js-cookie"; 2 | import {omit, merge, toPairs, forEach} from "../../../../../node_modules/ramda"; 3 | import {closeModal} from "./modal"; 4 | 5 | const SAVE_SETTING = "SAVE_SETTING"; 6 | 7 | export const setCookies = forEach(([k, v]) => Cookies.set(k, v)); 8 | 9 | // this is used as a factory so we can mock it up during tests 10 | // the function used in the app is setup below 11 | export const _saveSettings = setCookies => 12 | m => dispatch => { 13 | const values = omit(["console_curl_password", "kibana_curl_password", "sense_curl_password", "alternativeChangeSource"], m); 14 | setCookies(toPairs(values)); 15 | dispatch(closeModal()); 16 | return dispatch({ 17 | type: SAVE_SETTING, 18 | settings: m 19 | }); 20 | }; 21 | 22 | export const saveSettings = _saveSettings(setCookies); 23 | 24 | const initialState = { 25 | /* 26 | language: lang, 27 | langStrings: LangStrings, 28 | baseUrl: base_url, 29 | kibana_url, 30 | console_url, 31 | sense_url, 32 | curl_host: Cookies.get("curl_host") || "localhost:9200", 33 | curl_user: Cookies.get("curl_user"), 34 | curl_password: Cookies.get("curl_password") 35 | */ 36 | }; 37 | 38 | export const reducer = (state = initialState, action) => { 39 | switch (action.type) { 40 | case SAVE_SETTING: 41 | return merge(state, action.settings); 42 | default: 43 | return state; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /resources/web/docs_js/components/modal.js: -------------------------------------------------------------------------------- 1 | import {h} from "../../../../../node_modules/preact"; 2 | import {connect} from "../../../../../node_modules/preact-redux"; 3 | import {closeModal} from "../actions/modal"; 4 | 5 | export const Modal = ({Component, props, isOpen, closeModal}) => { 6 | return isOpen && ( 7 |
8 |
9 |
×
10 | 11 |
12 |
13 | ); 14 | }; 15 | 16 | export default connect(state => ({ 17 | ...state.modal 18 | }), {closeModal})(Modal); 19 | -------------------------------------------------------------------------------- /resources/web/docs_js/components/mount.js: -------------------------------------------------------------------------------- 1 | import { Provider } from '../../../../../node_modules/preact-redux'; 2 | import { h, render } from '../../../../../node_modules/preact'; 3 | import store from "../store"; 4 | 5 | export const mount = ({el, Component, props = {}, store}) => 6 | render( 7 | ( 8 | 9 | ) 10 | , el); 11 | 12 | export default (domEl, Component, opts = {}) => 13 | mount({el: domEl[0], Component, props: opts, store: store()}); 14 | -------------------------------------------------------------------------------- /resources/web/docs_js/deps.js: -------------------------------------------------------------------------------- 1 | import _Cookies from "../../../../node_modules/js-cookie"; 2 | 3 | export const jQuery = window.jQuery; 4 | export const $ = window.jQuery; 5 | export const Cookies = _Cookies; 6 | -------------------------------------------------------------------------------- /resources/web/docs_js/store.js: -------------------------------------------------------------------------------- 1 | import thunk from '../../../../node_modules/redux-thunk'; 2 | import { createStore, applyMiddleware } from '../../../../node_modules/redux'; 3 | import reducer from "./actions"; 4 | 5 | export const newStore = initialState => 6 | createStore(reducer, initialState, applyMiddleware(thunk)); 7 | 8 | export default initialState => { 9 | if (!window.__reduxStore) { 10 | window.__reduxStore = newStore(initialState); 11 | } 12 | 13 | return window.__reduxStore; 14 | } 15 | -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Black.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Black.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-BlackItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-BlackItalic.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-BlackItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-BlackItalic.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Bold.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Bold.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-BoldItalic.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-BoldItalic.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-ExtraBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-ExtraBold.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-ExtraBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-ExtraBold.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-ExtraBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-ExtraBoldItalic.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-ExtraBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-ExtraBoldItalic.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-ExtraLight-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-ExtraLight-BETA.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-ExtraLight-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-ExtraLight-BETA.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-ExtraLightItalic-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-ExtraLightItalic-BETA.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-ExtraLightItalic-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-ExtraLightItalic-BETA.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Italic.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Italic.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Light-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Light-BETA.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Light-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Light-BETA.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-LightItalic-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-LightItalic-BETA.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-LightItalic-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-LightItalic-BETA.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Medium.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Medium.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-MediumItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-MediumItalic.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-MediumItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-MediumItalic.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Regular.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Regular.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-SemiBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-SemiBold.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-SemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-SemiBold.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-SemiBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-SemiBoldItalic.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-SemiBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-SemiBoldItalic.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Thin-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Thin-BETA.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-Thin-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-Thin-BETA.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-ThinItalic-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-ThinItalic-BETA.woff -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-ThinItalic-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-ThinItalic-BETA.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-italic.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-italic.var.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter-upright.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter-upright.var.woff2 -------------------------------------------------------------------------------- /resources/web/lib/inter/Inter.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/inter/Inter.var.woff2 -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Black.otf -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Black.woff -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Black.woff2 -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Bold.otf -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Bold.woff -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Bold.woff2 -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-DemiLight.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-DemiLight.otf -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-DemiLight.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-DemiLight.woff -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-DemiLight.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-DemiLight.woff2 -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Light.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Light.otf -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Light.woff -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Light.woff2 -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Medium.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Medium.otf -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Medium.woff -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Medium.woff2 -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Regular.otf -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Regular.woff -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Regular.woff2 -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Thin.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Thin.otf -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Thin.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Thin.woff -------------------------------------------------------------------------------- /resources/web/lib/noto-sans-japanese/NotoSansJP-Thin.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/noto-sans-japanese/NotoSansJP-Thin.woff2 -------------------------------------------------------------------------------- /resources/web/lib/roboto-mono/roboto-mono-latin-400-normal.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/roboto-mono/roboto-mono-latin-400-normal.woff -------------------------------------------------------------------------------- /resources/web/lib/roboto-mono/roboto-mono-latin-400-normal.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/lib/roboto-mono/roboto-mono-latin-400-normal.woff2 -------------------------------------------------------------------------------- /resources/web/lib/roboto-mono/roboto-mono.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'Roboto Mono'; 3 | font-style: normal; 4 | font-weight: 400; 5 | src: url(roboto-mono-latin-400-normal.woff2) format('woff2'), 6 | url(roboto-mono-latin-400-normal.woff) format('woff'); 7 | } 8 | -------------------------------------------------------------------------------- /resources/web/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | require('precss')(), 4 | require('postcss-assets'), 5 | ], 6 | }; 7 | -------------------------------------------------------------------------------- /resources/web/static/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/android-chrome-192x192.png -------------------------------------------------------------------------------- /resources/web/static/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/apple-icon-114x114.png -------------------------------------------------------------------------------- /resources/web/static/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/apple-icon-120x120.png -------------------------------------------------------------------------------- /resources/web/static/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/apple-icon-144x144.png -------------------------------------------------------------------------------- /resources/web/static/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/apple-icon-152x152.png -------------------------------------------------------------------------------- /resources/web/static/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/apple-icon-180x180.png -------------------------------------------------------------------------------- /resources/web/static/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/apple-icon-57x57.png -------------------------------------------------------------------------------- /resources/web/static/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/apple-icon-60x60.png -------------------------------------------------------------------------------- /resources/web/static/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/apple-icon-72x72.png -------------------------------------------------------------------------------- /resources/web/static/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/apple-icon-76x76.png -------------------------------------------------------------------------------- /resources/web/static/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/favicon-16x16.png -------------------------------------------------------------------------------- /resources/web/static/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/favicon-32x32.png -------------------------------------------------------------------------------- /resources/web/static/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/favicon-96x96.png -------------------------------------------------------------------------------- /resources/web/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/favicon.ico -------------------------------------------------------------------------------- /resources/web/static/favicon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/favicon_16x16.png -------------------------------------------------------------------------------- /resources/web/static/favicon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/favicon_32x32.png -------------------------------------------------------------------------------- /resources/web/static/favicon_64x64_16bit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/static/favicon_64x64_16bit.png -------------------------------------------------------------------------------- /resources/web/static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "App", 3 | "icons": [ 4 | { 5 | "src": "\/android-icon-36x36.png", 6 | "sizes": "36x36", 7 | "type": "image\/png", 8 | "density": "0.75" 9 | }, 10 | { 11 | "src": "\/android-icon-48x48.png", 12 | "sizes": "48x48", 13 | "type": "image\/png", 14 | "density": "1.0" 15 | }, 16 | { 17 | "src": "\/android-icon-72x72.png", 18 | "sizes": "72x72", 19 | "type": "image\/png", 20 | "density": "1.5" 21 | }, 22 | { 23 | "src": "\/android-icon-96x96.png", 24 | "sizes": "96x96", 25 | "type": "image\/png", 26 | "density": "2.0" 27 | }, 28 | { 29 | "src": "\/android-icon-144x144.png", 30 | "sizes": "144x144", 31 | "type": "image\/png", 32 | "density": "3.0" 33 | }, 34 | { 35 | "src": "\/android-icon-192x192.png", 36 | "sizes": "192x192", 37 | "type": "image\/png", 38 | "density": "4.0" 39 | } 40 | ] 41 | } -------------------------------------------------------------------------------- /resources/web/style/air_gapped.pcss: -------------------------------------------------------------------------------- 1 | #air_gapped_footer { 2 | background: #343741; 3 | color: white; 4 | padding-top: 30px; 5 | a { 6 | color: white; 7 | &:hover { 8 | text-decoration: underline; 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /resources/web/style/calloutlist.pcss: -------------------------------------------------------------------------------- 1 | #guide .calloutlist { 2 | margin: -15px 0 15px auto; 3 | border-top: 1px solid #52576a; 4 | padding: 15px 0 0 15px; 5 | td { 6 | padding: 0; 7 | border: none; 8 | } 9 | a { 10 | text-decoration: underline; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /resources/web/style/conum.pcss: -------------------------------------------------------------------------------- 1 | #guide { 2 | .conum { 3 | display: inline-block; 4 | width: 16px; 5 | height: 16px; 6 | line-height: 16px; 7 | color: #f5f7fa; 8 | background-color: #0080d5; 9 | border-radius: 100px; 10 | text-align: center; 11 | font-size: 10pt; 12 | font-weight: bold; 13 | font-family: Inter, sans-serif; 14 | font-style: normal; 15 | &::after { 16 | content: attr(data-value); 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /resources/web/style/docbook.pcss: -------------------------------------------------------------------------------- 1 | #guide { 2 | div { 3 | &.chapter, 4 | &.part, 5 | &.section { 6 | margin-bottom: 2em; 7 | } 8 | } 9 | 10 | .article div.section, 11 | .book div.part, 12 | .book div.chapter, 13 | .chapter div.section { 14 | margin-top: 2em; 15 | } 16 | } 17 | 18 | .guide-section { 19 | margin-bottom: 30px; 20 | @media screen and (max-width: 992px) { 21 | padding-right: 40px; 22 | } 23 | } 24 | 25 | #sticky_content { 26 | padding-bottom: 30px; 27 | } -------------------------------------------------------------------------------- /resources/web/style/example.pcss: -------------------------------------------------------------------------------- 1 | #guide .example { 2 | margin: 0; 3 | 4 | .title { 5 | margin: 0 0 0 10px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /resources/web/style/icons.pcss: -------------------------------------------------------------------------------- 1 | #guide { 2 | .eui-icon { 3 | background-repeat: no-repeat; 4 | background-position: 0 0; 5 | background-size: contain; 6 | display: inline-block; 7 | width: 16px; 8 | height: 16px; 9 | vertical-align: middle; 10 | &.icon-bug { background-image: inline("img/icons/bug.svg"); } 11 | &.icon-checkInCircleFilled { background-image: inline("img/icons/checkInCircleFilled.svg"); } 12 | &.icon-warningFilled { background-image: inline("img/icons/warningFilled.svg"); } 13 | } 14 | } -------------------------------------------------------------------------------- /resources/web/style/img.pcss: -------------------------------------------------------------------------------- 1 | #guide { 2 | /* 'inlinemediaobject' and 'mediaobject' are for docbook. 'image' and 3 | * 'imageblock' are for Asciidoctor. */ 4 | .image, .imageblock, .inlinemediaobject, .mediaobject { 5 | img { 6 | max-width: 100%; 7 | } 8 | .title { 9 | font-weight: bold; 10 | margin-bottom: 1em; 11 | color: #333; 12 | font-style: italic; 13 | font-size: 0.9em; 14 | } 15 | } 16 | .imageblock { 17 | /* Asciidoctor emits the title *after* the image but we want it above. */ 18 | margin: 32px 0 32px 0; 19 | display: flex; 20 | flex-direction: column-reverse; 21 | } 22 | .screenshot img { 23 | box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /resources/web/style/img/alert.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/web/style/img/check.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/web/style/img/copy.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /resources/web/style/img/edit-me-private.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/style/img/edit-me-private.png -------------------------------------------------------------------------------- /resources/web/style/img/edit-me.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/style/img/edit-me.png -------------------------------------------------------------------------------- /resources/web/style/img/gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/style/img/gear.png -------------------------------------------------------------------------------- /resources/web/style/img/icons/checkInCircleFilled.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /resources/web/style/img/icons/warningFilled.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /resources/web/style/img/important.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | important 6 | Created with Sketch. 7 | 8 | 9 | 10 | 12 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /resources/web/style/img/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/style/img/link.png -------------------------------------------------------------------------------- /resources/web/style/img/minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/style/img/minus.png -------------------------------------------------------------------------------- /resources/web/style/img/note.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | note 6 | Created with Sketch. 7 | 8 | 9 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /resources/web/style/img/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/resources/web/style/img/plus.png -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/icon-beats-bb-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 13 | 15 | 16 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/icon-cloud-bb-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/icon-elastic-stack-bb-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/icon-elasticsearch-bb-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/icon-expand.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/icon-kibana-bb-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/icon-logstash-bb-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/icon-xpack-bb-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-apm-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / apm / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-app-search-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / apm / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-beats-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / beats / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-business-analytics-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / business-analytics / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-code-search-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / lambda / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-kibana-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / kibana / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-logging-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / logging / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-logstash-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / logstash / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-maps-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / maps / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-siem-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / security-analytics / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-site-search-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / site-search / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-stack-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / stack / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/web/style/img/rtpcontainer/logo-uptime-32-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | icon / product-logo / 32x32px / uptime / white 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /resources/web/style/img/tip.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | tip 6 | Created with Sketch. 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /resources/web/style/img/warning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/web/style/layout.pcss: -------------------------------------------------------------------------------- 1 | #guide { 2 | .container, .row { 3 | &:before, &:after { 4 | content: normal; 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /resources/web/style/link.pcss: -------------------------------------------------------------------------------- 1 | #guide { 2 | a { 3 | color: #0077CC; 4 | font-weight: normal; 5 | text-decoration: none; 6 | outline: none; 7 | outline-offset: 0; 8 | &:hover, &:focus { 9 | text-decoration: underline !important; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /resources/web/style/list.pcss: -------------------------------------------------------------------------------- 1 | %list-common { 2 | padding-left: 2em; 3 | margin-bottom: 24px; 4 | /* Drop margins inside of multi-level lists. */ 5 | ol, ul { margin-bottom: 0 } 6 | } 7 | 8 | #guide { 9 | ul { 10 | list-style: disc; 11 | @extend %list-common; 12 | li { 13 | /* Elastic's main.css leaks into the docs and sets this to none so we 14 | * have to set it back here. */ 15 | list-style: inherit; 16 | } 17 | } 18 | ol { 19 | list-style: decimal; 20 | @extend %list-common; 21 | 22 | /* Respect explicitly typed lists. */ 23 | &[type=a] { 24 | list-style: lower-alpha; 25 | } 26 | &[type="1"] { 27 | list-style: decimal; 28 | } 29 | } 30 | li { 31 | padding: 0.15em 1em 0.15em 0; 32 | /* Style implicitly typed lists. */ 33 | ol { list-style: lower-alpha; } 34 | li { 35 | ol { list-style: lower-roman; } 36 | li { 37 | ol { list-style: upper-alpha; } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /resources/web/style/on_this_page.pcss: -------------------------------------------------------------------------------- 1 | #guide { 2 | .heading-level-0 { 3 | display: block; 4 | } 5 | 6 | .heading-level-1 { 7 | display: block; 8 | padding-left: 1em !important; 9 | } 10 | 11 | .heading-level-2 { 12 | display: block; 13 | padding-left: 2em !important; 14 | } 15 | 16 | .heading-level-3 { 17 | display: block; 18 | padding-left: 3em !important; 19 | } 20 | } -------------------------------------------------------------------------------- /resources/web/style/page_header.pcss: -------------------------------------------------------------------------------- 1 | #guide { 2 | .page_header { 3 | padding: 1em; 4 | margin-bottom: 1em; 5 | border: 1px solid #ccc; 6 | background: #FFFFD2; 7 | color: black; 8 | display: none; 9 | } 10 | 11 | .version-warning { 12 | padding: 1em; 13 | margin-bottom: 1em; 14 | border: 1px solid #ccc; 15 | background: #FFFFD2; 16 | color: black; 17 | } 18 | 19 | .abstract .page_header, 20 | .abstract .version-warning { 21 | width: 100%; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /resources/web/style/settings_modal.pcss: -------------------------------------------------------------------------------- 1 | #settings_modal { 2 | display: inline-block; 3 | position: relative; 4 | margin: 15% auto; 5 | width: 600px; 6 | background: #f8f8f8; 7 | border: 1px solid #ddd; 8 | border-radius: 10px; 9 | padding: 2em 4em 1em; 10 | text-align: left; 11 | box-shadow: 5px 7px 7px #ccc; 12 | &_bg { 13 | position: fixed; 14 | top: 0; 15 | right: 0; 16 | bottom: 0; 17 | left: 0; 18 | background: rgba(255,255,255,0.8); 19 | z-index: 99999; 20 | text-align: center; 21 | } 22 | label { 23 | display: block; 24 | margin: 0.5em 0; 25 | color: #2b4590; 26 | } 27 | input { 28 | width: 100%; 29 | display: block; 30 | margin-bottom: 0.1em; 31 | font-family: monospace; 32 | } 33 | button { 34 | margin: 0.5em 0.5em 1em 0; 35 | background-color: #00a9e5; 36 | color: white; 37 | border: none; 38 | } 39 | } 40 | 41 | .settings_modal-close { 42 | position: absolute; 43 | top: 2px; 44 | right: 10px; 45 | font-size: 20px; 46 | color: #ccc; 47 | &:hover { 48 | color: black; 49 | cursor: pointer; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /resources/web/style/sidebar.pcss: -------------------------------------------------------------------------------- 1 | #guide .sidebar { 2 | border: 1px solid #00a9e5; 3 | border-radius: 10px; 4 | background: #fbfbfb; 5 | padding: 15px 20px 0; 6 | margin: 10px 15px 20px; 7 | 8 | .title { 9 | margin: 0; 10 | border-bottom: 1px solid #ddd; 11 | margin-bottom: 10px; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /resources/web/style/this_page.pcss: -------------------------------------------------------------------------------- 1 | #this_page { 2 | padding-bottom: 20px; 3 | display: block; 4 | border-bottom: 1px solid #dee2e6; 5 | max-height:40vh; 6 | overflow: auto; 7 | @media screen and (max-width: 992px) { 8 | display: none; 9 | } 10 | h2 { 11 | font-size: 1.5em; 12 | line-height: 1.5em; 13 | } 14 | ul { 15 | list-style: none; 16 | margin: 0; 17 | font-size: 0.85em; 18 | padding: 0; 19 | } 20 | li { 21 | line-height: 1.2em; 22 | margin-top: .3em; 23 | margin-bottom: .3em; 24 | } 25 | .active { 26 | font-weight: 700; 27 | font-style: ul; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /resources/web/style/util.pcss: -------------------------------------------------------------------------------- 1 | #guide, #air_gapped_footer { 2 | .u-text-center { 3 | text-align: center; 4 | } 5 | .u-mono { 6 | font-family:Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; 7 | } 8 | .u-strikethrough { 9 | text-decoration: line-through; 10 | } 11 | .u-space-between { 12 | display: flex; 13 | justify-content: space-between; 14 | } 15 | } -------------------------------------------------------------------------------- /resources/web/style/video.pcss: -------------------------------------------------------------------------------- 1 | #guide { 2 | /* This should line up with img.pcss. */ 3 | .videoblock { 4 | img { 5 | max-width: 100%; 6 | } 7 | iframe { 8 | width: 100% 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /resources/web/style/xpack.pcss: -------------------------------------------------------------------------------- 1 | #guide { 2 | .xpack_tag { 3 | background-image: inline("img/xpack-default.svg"); 4 | background-repeat: no-repeat; 5 | background-position: 0 0; 6 | display: inline-block; 7 | width: 52px; 8 | height: 1em; 9 | margin-left: 10px; 10 | z-index: 1000; 11 | position: relative; 12 | vertical-align: middle; 13 | &:hover { 14 | background-image: inline("img/xpack-hover.svg "); 15 | } 16 | } 17 | 18 | /* 19 | * When we mark a floating title with xpack we do it by annotating a phrase 20 | * inside the title. That "phrase" would be rendered in a funny way 21 | * without this. 22 | */ 23 | h1 > .xpack, 24 | h2 > .xpack, 25 | h3 > .xpack, 26 | h4 > .xpack, 27 | h5 > .xpack, 28 | h6 > .xpack { 29 | font-size: inherit; 30 | margin-top: inherit; 31 | margin-bottom: inherit; 32 | margin-left: inherit; 33 | margin-right: inherit; 34 | font-weight: inherit; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /resources/web/styles-v1.pcss: -------------------------------------------------------------------------------- 1 | @import './lib/bootstrap/bootstrap.css'; 2 | @import './lib/inter/inter.css'; 3 | @import './lib/noto-sans-japanese/noto-sans-japanese.css'; 4 | @import './lib/roboto-mono/roboto-mono.css'; 5 | 6 | @import './style/air_gapped.pcss'; 7 | @import './style/base_styles.pcss'; 8 | @import './style/alternative_picker.pcss'; 9 | @import './style/admonishment.pcss'; 10 | @import './style/calloutlist.pcss'; 11 | @import './style/conum.pcss'; 12 | @import './style/code.pcss'; 13 | @import './style/console_widget.pcss'; 14 | @import './style/docbook.pcss'; 15 | @import './style/example.pcss'; 16 | @import './style/feedback.pcss'; 17 | @import './style/heading.pcss'; 18 | @import './style/icons.pcss'; 19 | @import './style/img.pcss'; 20 | @import './style/layout.pcss'; 21 | @import './style/link.pcss'; 22 | @import './style/list.pcss'; 23 | @import './style/nav.pcss'; 24 | @import './style/on_this_page.pcss'; 25 | @import './style/page_header.pcss'; 26 | @import './style/rtpcontainer.pcss'; 27 | @import './style/settings_modal.pcss'; 28 | @import './style/sidebar.pcss'; 29 | @import './style/table.pcss'; 30 | @import './style/tabbed_widget.pcss'; 31 | @import './style/this_page.pcss'; 32 | @import './style/toc.pcss'; 33 | @import './style/util.pcss'; 34 | @import './style/video.pcss'; 35 | @import './style/xpack.pcss'; 36 | @import './style/openapi.pcss'; 37 | 38 | /* test comment used to detect unminified source */ 39 | -------------------------------------------------------------------------------- /shared/cloud/cloud-login.asciidoc: -------------------------------------------------------------------------------- 1 | // tag::ess[] 2 | . Log in to the link:https://cloud.elastic.co/{ess-utm-params}[Elasticsearch Service Console]. 3 | . Select your deployment on the home page in the {ess} card or go to the deployments page. 4 | + 5 | Narrow your deployments by name, ID, or choose from several other filters. To customize your view, use a combination of filters, or change the format from a grid to a list. 6 | // end::ess[] 7 | 8 | // tag::ece[] 9 | . {ece-ref}/ece-login.html[Log into the Cloud UI] 10 | . On the deployments page, select your deployment. 11 | + 12 | Narrow the list by name, ID, or choose from several other filters. To further define the list, use a combination of filters. 13 | // end::ece[] -------------------------------------------------------------------------------- /shared/cloud/ess-access-kibana.asciidoc: -------------------------------------------------------------------------------- 1 | // Include this file in your docs: 2 | // include::{docs-root}/shared/cloud/ess-access-kibana.asciidoc[] 3 | 4 | //[id="{p}-access-kibana"] 5 | //== Access Kibana 6 | 7 | Kibana is an open source analytics and visualization platform designed to search, view, and interact with data stored in Elasticsearch indices. Kibana is included with your subscription. 8 | 9 | To access Kibana: 10 | 11 | . Log into {ess-console}[Elastic Cloud]. 12 | + 13 | TIP: If you don't have access, {ess-trial}[get a free trial]. 14 | 15 | . Select your Elasticsearch Service deployment. 16 | 17 | . Under *Applications*, click the Kibana *Launch* link and wait for Kibana to open. 18 | 19 | . Log into Kibana as the `elastic` superuser to try it out. (Don't have the password? Reset it on the *Security* page for your deployment. 20 | 21 | // In production systems, you might need to control what Elasticsearch data users can access through Kibana, so you need create credentials that can be used to access the necessary Elasticsearch resources. This means granting read access to the necessary indexes, as well as access to update the `.kibana` index. 22 | -------------------------------------------------------------------------------- /shared/cloud/ess-getting-started-obs.asciidoc: -------------------------------------------------------------------------------- 1 | // Include this file in your docs: 2 | // include::{docs-root}/shared/cloud/ess-getting-started-obs.asciidoc[] 3 | 4 | . {ess-trial}[Get a free trial]. 5 | 6 | . Log into {ess-console}[{ecloud}]. 7 | 8 | . Click *Create deployment*. 9 | 10 | . Give your deployment a name. 11 | 12 | . Click *Create deployment*. 13 | 14 | . Save your deployment credentials. 15 | 16 | You can find your Cloud ID and APM endpoint in your deployments 17 | list at {ess-deployments}[cloud.elastic.co]. To reset the provided 18 | password, go to the *Security* page for your deployment. 19 | -------------------------------------------------------------------------------- /shared/cloud/ess-getting-started.asciidoc: -------------------------------------------------------------------------------- 1 | // Include this file in your docs: 2 | // include::{docs-root}/shared/cloud/ess-getting-started.asciidoc[] 3 | 4 | //[[cloud-ess-getting-started]] 5 | //== Get started with {ess} 6 | 7 | There's no faster way to get started than with Elastic Cloud: 8 | 9 | // tag::generic[] 10 | . {ess-trial}[Sign up for a free trial]. 11 | 12 | . Follow the on-screen steps to create your first project. 13 | // end::generic[] 14 | 15 | That’s it! You're ready to get some data into your 16 | project. 17 | -------------------------------------------------------------------------------- /shared/cloud/tab-widgets/cloud-login-widget.asciidoc: -------------------------------------------------------------------------------- 1 | ++++ 2 |
3 |
4 | 10 | 16 |
17 |
21 | ++++ 22 | 23 | include::../cloud-login.asciidoc[tag=ess] 24 | 25 | ++++ 26 |
27 | 38 |
39 | ++++ -------------------------------------------------------------------------------- /shared/discontinued.asciidoc: -------------------------------------------------------------------------------- 1 | 2 | // tag::cm-discontinued[] 3 | 4 | .Beats central management discontinued 5 | **** 6 | We have ceased development on Beats central management and 7 | are working on a comprehensive solution to replace it. 8 | Thank you for participating in the beta and providing feedback. 9 | If you have any questions or concerns, please reach out to us on the 10 | https://discuss.elastic.co/c/beats[Discuss forum]. 11 | **** 12 | 13 | // end::cm-discontinued[] -------------------------------------------------------------------------------- /shared/images/logo_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/shared/images/logo_cloud.png -------------------------------------------------------------------------------- /shared/images/logo_cloud_ece.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elastic/docs/4bcaa5785511b21b79e1949447690cb11a6ecf08/shared/images/logo_cloud_ece.png -------------------------------------------------------------------------------- /shared/legacy-attrs.asciidoc: -------------------------------------------------------------------------------- 1 | // Legacy URLs to specific versions of books which have been moved 2 | :marvel-13: https://www.elastic.co/guide/en/marvel/1.3/ 3 | :shield-13: https://www.elastic.co/guide/en/shield/1.3/ 4 | -------------------------------------------------------------------------------- /shared/notices/README.txt: -------------------------------------------------------------------------------- 1 | This directory contains boilerplate notices for books that are released in sync with the stack 2 | versioning. 3 | 4 | page_header-maintenance.html contains the notice for the live "maintenance version" from the 5 | previous major release stream. (The last minor of the previous major.) 6 | 7 | page_header-EOL.html contains the notice for all versions that have reached their 8 | end of life (EOL) date. For the official Elastic product EOL schedule, 9 | see https://www.elastic.co/support/eol. 10 | 11 | These notices need to be set explicitly by adding a file named `page_header.html` to the same 12 | directory as the `index.asciidoc` file used to build each book. Edit the EOL notice to specify 13 | the appropriate product and version. 14 | 15 | If no page_header.html file is specified for a version older than current, the default 16 | "out of maintenance" notice is displayed: 17 | 18 | IMPORTANT: No additional bug fixes or documentation updates will be released for this version. 19 | For the latest information, see the current release documentation. 20 | 21 | Note that you can create a custom page header for any version of a book. 22 | This is useful for beta versions and when books are superseded by entirely new books. 23 | The header must be valid HTML and cannot contain comments. -------------------------------------------------------------------------------- /shared/notices/page_header-EOL.html: -------------------------------------------------------------------------------- 1 |

2 | WARNING: Version {version} of {product} has passed its 3 | EOL date. 4 |

5 |

6 | This documentation is no longer being maintained and may be removed. 7 | If you are running this version, we strongly advise you to upgrade. 8 | For the latest information, see the 9 | current release documentation. 10 |

-------------------------------------------------------------------------------- /shared/notices/page_header-maintenance.html: -------------------------------------------------------------------------------- 1 |

2 | NOTE: You are looking at documentation for an older release. 3 | For the latest information, see the 4 | current release documentation. 5 |

-------------------------------------------------------------------------------- /shared/settings55.asciidoc: -------------------------------------------------------------------------------- 1 | You configure settings for {xpack} features in the `elasticsearch.yml`, 2 | `kibana.yml`, and `logstash.yml` configuration files. 3 | 4 | [options="header", cols="a,d,d,d"] 5 | |======================= 6 | |{xpack} Feature |{es} Settings |{kib} Settings |Logstash Settings 7 | |Development Tools |No |{kibana-ref}/dev-settings-kb.html[Yes] |No 8 | |Graph |No |{kibana-ref}/graph-settings-kb.html[Yes] |No 9 | |Machine learning |{ref}/ml-settings.html[Yes] |{kibana-ref}/ml-settings-kb.html[Yes] |No 10 | |Monitoring |{ref}/monitoring-settings.html[Yes] |{kibana-ref}/monitoring-settings-kb.html[Yes] |{logstash-ref}/settings-xpack.html#monitoring-settings[Yes] 11 | |Reporting |No |{kibana-ref}/reporting-settings-kb.html[Yes] |No 12 | .2+|Security 13 | 14 | * Auditing 15 | |{ref}/security-settings.html[Yes] |{kibana-ref}/security-settings-kb.html[Yes] |No 16 | |{ref}/auditing-settings.html[Yes] |No |No 17 | |Watcher |{ref}/notification-settings.html[Yes] |No |No 18 | |======================= 19 | -------------------------------------------------------------------------------- /shared/settings56.asciidoc: -------------------------------------------------------------------------------- 1 | You configure settings for {xpack} features in the `elasticsearch.yml`, 2 | `kibana.yml`, and `logstash.yml` configuration files. 3 | 4 | [options="header", cols="a,d,d,d"] 5 | |======================= 6 | |{xpack} Feature |{es} Settings |{kib} Settings |Logstash Settings 7 | |Development Tools |No |{kibana-ref}/dev-settings-kb.html[Yes] |No 8 | |Graph |No |{kibana-ref}/graph-settings-kb.html[Yes] |No 9 | |Machine learning |{ref}/ml-settings.html[Yes] |{kibana-ref}/ml-settings-kb.html[Yes] |No 10 | |Monitoring |{ref}/monitoring-settings.html[Yes] |{kibana-ref}/monitoring-settings-kb.html[Yes] |{logstash-ref}/settings-xpack.html#monitoring-settings[Yes] 11 | |Reporting |No |{kibana-ref}/reporting-settings-kb.html[Yes] |No 12 | .2+|Security 13 | 14 | * Auditing 15 | |{ref}/security-settings.html[Yes] |{kibana-ref}/security-settings-kb.html[Yes] |No 16 | |{ref}/auditing-settings.html[Yes] |No |No 17 | |Watcher |{ref}/notification-settings.html[Yes] |No |No 18 | |======================= 19 | -------------------------------------------------------------------------------- /shared/settings60.asciidoc: -------------------------------------------------------------------------------- 1 | You configure settings for {xpack} features in the `elasticsearch.yml`, 2 | `kibana.yml`, and `logstash.yml` configuration files. 3 | 4 | [options="header", cols="a,d,d,d"] 5 | |======================= 6 | |{xpack} Feature |{es} Settings |{kib} Settings |Logstash Settings 7 | |Development Tools |No |{kibana-ref}/dev-settings-kb.html[Yes] |No 8 | |Graph |No |{kibana-ref}/graph-settings-kb.html[Yes] |No 9 | |Machine learning |{ref}/ml-settings.html[Yes] |{kibana-ref}/ml-settings-kb.html[Yes] |No 10 | |Management |No |No |{logstash-ref}/configuring-centralized-pipelines.html#configuration-management-settings[Yes] 11 | |Monitoring |{ref}/monitoring-settings.html[Yes] |{kibana-ref}/monitoring-settings-kb.html[Yes] |{logstash-ref}/configuring-logstash.html#monitoring-settings[Yes] 12 | |Reporting |No |{kibana-ref}/reporting-settings-kb.html[Yes] |No 13 | .2+|Security 14 | 15 | * Auditing 16 | |{ref}/security-settings.html[Yes] |{kibana-ref}/security-settings-kb.html[Yes] |No 17 | |{ref}/auditing-settings.html[Yes] |No |No 18 | |Watcher |{ref}/notification-settings.html[Yes] |No |No 19 | |======================= 20 | -------------------------------------------------------------------------------- /shared/versions.asciidoc: -------------------------------------------------------------------------------- 1 | include::versions/stack/master.asciidoc[] -------------------------------------------------------------------------------- /shared/versions/ece/1.0.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 1.0.2 2 | :ece-version-short: 1.0 3 | :ece-version-link: current 4 | -------------------------------------------------------------------------------- /shared/versions/ece/1.1.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 1.1.5 2 | :ece-version-short: 1.1 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/2.0.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.0.1 2 | :ece-version-short: 2.0 3 | :ece-version-link: current 4 | -------------------------------------------------------------------------------- /shared/versions/ece/2.1.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.1.1 2 | :ece-version-short: 2.1 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/2.2.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.2.3 2 | :ece-version-short: 2.2 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/2.3.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.3.2 2 | :ece-version-short: 2.3 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/2.4.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.4.3 2 | :ece-version-short: 2.4 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/2.5.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.5.1 2 | :ece-version-short: 2.5 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/current.asciidoc: -------------------------------------------------------------------------------- 1 | include::ms-119.asciidoc[] 2 | -------------------------------------------------------------------------------- /shared/versions/ece/master.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 4.0.0 2 | :ece-version-short: 4.0 3 | :ece-version-link: 4.0 -------------------------------------------------------------------------------- /shared/versions/ece/ms-105.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 3.7.3 2 | :ece-version-short: 3.7 3 | :ece-version-link: 3.7 -------------------------------------------------------------------------------- /shared/versions/ece/ms-119.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 3.8.0 2 | :ece-version-short: 3.8 3 | :ece-version-link: 3.8 -------------------------------------------------------------------------------- /shared/versions/ece/ms-47.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.7.2 2 | :ece-version-short: 2.7 3 | :ece-version-link: current 4 | -------------------------------------------------------------------------------- /shared/versions/ece/ms-49.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.8.1 2 | :ece-version-short: 2.8 3 | :ece-version-link: current 4 | -------------------------------------------------------------------------------- /shared/versions/ece/ms-53.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.9.2 2 | :ece-version-short: 2.9 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/ms-57.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.10.0 2 | :ece-version-short: 2.10 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/ms-59.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.11.2 2 | :ece-version-short: 2.11 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/ms-62.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.12.1 2 | :ece-version-short: 2.12 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/ms-65.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.13.2 2 | :ece-version-short: 2.13 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/ms-69.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 3.0.0 2 | :ece-version-short: 3.0 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/ms-70.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 3.1.0 2 | :ece-version-short: 3.1 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/ms-72.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 3.2.1 2 | :ece-version-short: 3.2 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/ms-75.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 3.3.0 2 | :ece-version-short: 3.3 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/ms-81.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 3.4.1 2 | :ece-version-short: 3.4 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/ms-92.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 3.6.2 2 | :ece-version-short: 3.6 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/ece/release-ms-41.asciidoc: -------------------------------------------------------------------------------- 1 | :ece-version: 2.6.2 2 | :ece-version-short: 2.6 3 | :ece-version-link: current -------------------------------------------------------------------------------- /shared/versions/stack/5.5.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 5.5.3 2 | :logstash_version: 5.5.3 3 | :elasticsearch_version: 5.5.3 4 | :kibana_version: 5.5.3 5 | :branch: 5.5 6 | :minor-version: 5.5 7 | :major-version: 5.x 8 | :prev-major-version: 2.x 9 | :ece-version-link: current 10 | 11 | ////////// 12 | release-state can be: released | prerelease | unreleased 13 | ////////// 14 | 15 | :release-state: released 16 | -------------------------------------------------------------------------------- /shared/versions/stack/5.6.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 5.6.16 2 | :logstash_version: 5.6.16 3 | :elasticsearch_version: 5.6.16 4 | :kibana_version: 5.6.16 5 | :branch: 5.6 6 | :minor-version: 5.6 7 | :major-version: 5.x 8 | :prev-major-version: 2.x 9 | :ece-version-link: current 10 | 11 | ////////// 12 | release-state can be: released | prerelease | unreleased 13 | ////////// 14 | 15 | :release-state: released 16 | -------------------------------------------------------------------------------- /shared/versions/stack/6.0.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 6.0.1 2 | :logstash_version: 6.0.1 3 | :elasticsearch_version: 6.0.1 4 | :kibana_version: 6.0.1 5 | :apm_server_version: 6.0.1 6 | :branch: 6.0 7 | :minor-version: 6.0 8 | :major-version: 6.x 9 | :prev-major-version: 5.x 10 | :ece-version-link: current 11 | 12 | ////////// 13 | release-state can be: released | prerelease | unreleased 14 | ////////// 15 | :release-state: released 16 | -------------------------------------------------------------------------------- /shared/versions/stack/6.1.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 6.1.4 2 | :logstash_version: 6.1.4 3 | :elasticsearch_version: 6.1.4 4 | :kibana_version: 6.1.4 5 | :apm_server_version: 6.1.4 6 | :branch: 6.1 7 | :minor-version: 6.1 8 | :major-version: 6.x 9 | :prev-major-version: 5.x 10 | :ece-version-link: current 11 | 12 | ////////// 13 | release-state can be: released | prerelease | unreleased 14 | ////////// 15 | 16 | :release-state: released 17 | -------------------------------------------------------------------------------- /shared/versions/stack/6.2.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 6.2.4 2 | :logstash_version: 6.2.4 3 | :elasticsearch_version: 6.2.4 4 | :kibana_version: 6.2.4 5 | :apm_server_version: 6.2.4 6 | :branch: 6.2 7 | :minor-version: 6.2 8 | :major-version: 6.x 9 | :prev-major-version: 5.x 10 | :ece-version-link: current 11 | 12 | ////////// 13 | release-state can be: released | prerelease | unreleased 14 | ////////// 15 | 16 | :release-state: released 17 | -------------------------------------------------------------------------------- /shared/versions/stack/6.3.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 6.3.2 2 | :logstash_version: 6.3.2 3 | :elasticsearch_version: 6.3.2 4 | :kibana_version: 6.3.2 5 | :apm_server_version: 6.3.2 6 | :branch: 6.3 7 | :minor-version: 6.3 8 | :major-version: 6.x 9 | :prev-major-version: 5.x 10 | :ece-version-link: current 11 | 12 | ////////// 13 | release-state can be: released | prerelease | unreleased 14 | ////////// 15 | 16 | :release-state: released 17 | 18 | //// 19 | APM Agent versions 20 | //// 21 | :apm-rum-branch: 0.x 22 | :apm-node-branch: 1.x 23 | :apm-py-branch: 3.x 24 | -------------------------------------------------------------------------------- /shared/versions/stack/6.4.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 6.4.3 2 | :logstash_version: 6.4.3 3 | :elasticsearch_version: 6.4.3 4 | :kibana_version: 6.4.3 5 | :apm_server_version: 6.4.3 6 | :branch: 6.4 7 | :minor-version: 6.4 8 | :major-version: 6.x 9 | :prev-major-version: 5.x 10 | :ece-version-link: current 11 | 12 | ////////// 13 | release-state can be: released | prerelease | unreleased 14 | ////////// 15 | 16 | :release-state: released 17 | 18 | //// 19 | APM Agent versions 20 | //// 21 | :apm-rum-branch: 0.x 22 | :apm-node-branch: 1.x 23 | :apm-py-branch: 3.x 24 | -------------------------------------------------------------------------------- /shared/versions/stack/6.5.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 6.5.4 2 | :logstash_version: 6.5.4 3 | :elasticsearch_version: 6.5.4 4 | :kibana_version: 6.5.4 5 | :apm_server_version: 6.5.4 6 | :branch: 6.5 7 | :minor-version: 6.5 8 | :major-version: 6.x 9 | :prev-major-version: 5.x 10 | :ece-version-link: current 11 | 12 | ////////// 13 | release-state can be: released | prerelease | unreleased 14 | ////////// 15 | 16 | :release-state: released 17 | 18 | //// 19 | APM Agent versions 20 | //// 21 | :apm-go-branch: 1.x 22 | :apm-java-branch: 1.x 23 | :apm-rum-branch: 2.x 24 | :apm-node-branch: 2.x 25 | :apm-py-branch: 4.x 26 | :apm-ruby-branch: 3.x 27 | :apm-dotnet-branch: 1.x 28 | -------------------------------------------------------------------------------- /shared/versions/stack/6.6.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 6.6.2 2 | :logstash_version: 6.6.2 3 | :elasticsearch_version: 6.6.2 4 | :kibana_version: 6.6.2 5 | :apm_server_version: 6.6.2 6 | :branch: 6.6 7 | :minor-version: 6.6 8 | :major-version: 6.x 9 | :prev-major-version: 5.x 10 | :ece-version-link: current 11 | 12 | ////////// 13 | release-state can be: released | prerelease | unreleased 14 | ////////// 15 | 16 | :release-state: released 17 | 18 | //// 19 | APM Agent versions 20 | //// 21 | :apm-go-branch: 1.x 22 | :apm-java-branch: 1.x 23 | :apm-rum-branch: 3.x 24 | :apm-node-branch: 4.x 25 | :apm-py-branch: 5.x 26 | :apm-ruby-branch: 3.x 27 | :apm-dotnet-branch: 1.x 28 | -------------------------------------------------------------------------------- /shared/versions/stack/6.7.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 6.7.2 2 | :logstash_version: 6.7.2 3 | :elasticsearch_version: 6.7.2 4 | :kibana_version: 6.7.2 5 | :apm_server_version: 6.7.2 6 | :branch: 6.7 7 | :minor-version: 6.7 8 | :major-version: 6.x 9 | :prev-major-version: 5.x 10 | :ece-version-link: current 11 | 12 | ////////// 13 | release-state can be: released | prerelease | unreleased 14 | ////////// 15 | 16 | :release-state: released 17 | 18 | //// 19 | APM Agent versions 20 | //// 21 | :apm-go-branch: 1.x 22 | :apm-java-branch: 1.x 23 | :apm-rum-branch: 4.x 24 | :apm-node-branch: 4.x 25 | :apm-py-branch: 5.x 26 | :apm-ruby-branch: 3.x 27 | :apm-dotnet-branch: 1.x 28 | -------------------------------------------------------------------------------- /shared/versions/stack/6.8.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 6.8.23 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 6.8.23 6 | :logstash_version: 6.8.23 7 | :elasticsearch_version: 6.8.23 8 | :kibana_version: 6.8.23 9 | :apm_server_version: 6.8.23 10 | :branch: 6.8 11 | :minor-version: 6.8 12 | :major-version: 6.x 13 | :prev-major-version: 5.x 14 | :ecs_version: 1.0 15 | :ece-version-link: current 16 | 17 | ////////// 18 | release-state can be: released | prerelease | unreleased 19 | ////////// 20 | 21 | :release-state: released 22 | 23 | //// 24 | APM Agent versions 25 | //// 26 | :apm-go-branch: 1.x 27 | :apm-java-branch: 1.x 28 | :apm-rum-branch: 4.x 29 | :apm-node-branch: 4.x 30 | :apm-py-branch: 5.x 31 | :apm-ruby-branch: 3.x 32 | :apm-dotnet-branch: 1.x 33 | -------------------------------------------------------------------------------- /shared/versions/stack/7.0.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 7.0.1 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 7.0.1 6 | :logstash_version: 7.0.1 7 | :elasticsearch_version: 7.0.1 8 | :kibana_version: 7.0.1 9 | :apm_server_version: 7.0.1 10 | :branch: 7.0 11 | :minor-version: 7.0 12 | :major-version: 7.x 13 | :prev-major-version: 6.x 14 | :ecs_version: 1.0 15 | :ece-version-link: current 16 | 17 | ////////// 18 | release-state can be: released | prerelease | unreleased 19 | ////////// 20 | 21 | :release-state: released 22 | 23 | //// 24 | APM Agent versions 25 | //// 26 | :apm-go-branch: 1.x 27 | :apm-java-branch: 1.x 28 | :apm-rum-branch: 5.x 29 | :apm-node-branch: 4.x 30 | :apm-py-branch: 5.x 31 | :apm-ruby-branch: 3.x 32 | :apm-dotnet-branch: 1.x 33 | -------------------------------------------------------------------------------- /shared/versions/stack/7.1.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 7.1.1 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 7.1.1 6 | :logstash_version: 7.1.1 7 | :elasticsearch_version: 7.1.1 8 | :kibana_version: 7.1.1 9 | :apm_server_version: 7.1.1 10 | :branch: 7.1 11 | :minor-version: 7.1 12 | :major-version: 7.x 13 | :prev-major-version: 6.x 14 | :ecs_version: 1.0 15 | :ece-version-link: current 16 | 17 | ////////// 18 | release-state can be: released | prerelease | unreleased 19 | ////////// 20 | 21 | :release-state: released 22 | 23 | //// 24 | APM Agent versions 25 | //// 26 | :apm-go-branch: 1.x 27 | :apm-java-branch: 1.x 28 | :apm-rum-branch: 5.x 29 | :apm-node-branch: 4.x 30 | :apm-py-branch: 5.x 31 | :apm-ruby-branch: 3.x 32 | :apm-dotnet-branch: 1.x 33 | -------------------------------------------------------------------------------- /shared/versions/stack/7.10.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 7.10.2 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 7.10.2 6 | :logstash_version: 7.10.2 7 | :elasticsearch_version: 7.10.2 8 | :kibana_version: 7.10.2 9 | :apm_server_version: 7.10.2 10 | :branch: 7.10 11 | :minor-version: 7.10 12 | :major-version: 7.x 13 | :prev-major-version: 6.x 14 | :major-version-only: 7 15 | :ecs_version: 1.6 16 | :ece-version-link: current 17 | ////////// 18 | release-state can be: released | prerelease | unreleased 19 | ////////// 20 | :release-state: released 21 | 22 | ////////// 23 | is-current-version can be: true | false 24 | ////////// 25 | :is-current-version: false 26 | 27 | //// 28 | APM Agent versions 29 | //// 30 | :apm-go-branch: 1.x 31 | :apm-java-branch: 1.x 32 | :apm-rum-branch: 5.x 33 | :apm-node-branch: 4.x 34 | :apm-php-branch: master 35 | :apm-py-branch: 5.x 36 | :apm-ruby-branch: 3.x 37 | :apm-dotnet-branch: 1.x 38 | 39 | //// 40 | ECS Logging 41 | //// 42 | :ecs-logging: master 43 | :ecs-logging-go-logrus: master 44 | :ecs-logging-go-zap: master 45 | :ecs-logging-java: 1.x 46 | :ecs-logging-dotnet: master 47 | :ecs-logging-nodejs: master 48 | :ecs-logging-php: master 49 | :ecs-logging-python: master 50 | :ecs-logging-ruby: master 51 | -------------------------------------------------------------------------------- /shared/versions/stack/7.2.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 7.2.1 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 7.2.1 6 | :logstash_version: 7.2.1 7 | :elasticsearch_version: 7.2.1 8 | :kibana_version: 7.2.1 9 | :apm_server_version: 7.2.1 10 | :branch: 7.2 11 | :minor-version: 7.2 12 | :major-version: 7.x 13 | :prev-major-version: 6.x 14 | :ecs_version: 1.0 15 | :ece-version-link: current 16 | 17 | ////////// 18 | release-state can be: released | prerelease | unreleased 19 | ////////// 20 | 21 | :release-state: released 22 | 23 | //// 24 | APM Agent versions 25 | //// 26 | :apm-go-branch: 1.x 27 | :apm-java-branch: 1.x 28 | :apm-rum-branch: 5.x 29 | :apm-node-branch: 4.x 30 | :apm-py-branch: 5.x 31 | :apm-ruby-branch: 3.x 32 | :apm-dotnet-branch: 1.x 33 | -------------------------------------------------------------------------------- /shared/versions/stack/7.3.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 7.3.2 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 7.3.2 6 | :logstash_version: 7.3.2 7 | :elasticsearch_version: 7.3.2 8 | :kibana_version: 7.3.2 9 | :apm_server_version: 7.3.2 10 | :branch: 7.3 11 | :minor-version: 7.3 12 | :major-version: 7.x 13 | :prev-major-version: 6.x 14 | :ecs_version: 1.0 15 | :ece-version-link: current 16 | 17 | ////////// 18 | release-state can be: released | prerelease | unreleased 19 | ////////// 20 | 21 | :release-state: released 22 | 23 | //// 24 | APM Agent versions 25 | //// 26 | :apm-go-branch: 1.x 27 | :apm-java-branch: 1.x 28 | :apm-rum-branch: 5.x 29 | :apm-node-branch: 4.x 30 | :apm-py-branch: 5.x 31 | :apm-ruby-branch: 3.x 32 | :apm-dotnet-branch: 1.x 33 | -------------------------------------------------------------------------------- /shared/versions/stack/7.4.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 7.4.2 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 7.4.2 6 | :logstash_version: 7.4.2 7 | :elasticsearch_version: 7.4.2 8 | :kibana_version: 7.4.2 9 | :apm_server_version: 7.4.2 10 | :branch: 7.4 11 | :minor-version: 7.4 12 | :major-version: 7.x 13 | :prev-major-version: 6.x 14 | :ecs_version: 1.1 15 | :ece-version-link: current 16 | 17 | ////////// 18 | release-state can be: released | prerelease | unreleased 19 | ////////// 20 | 21 | :release-state: released 22 | 23 | //// 24 | APM Agent versions 25 | //// 26 | :apm-go-branch: 1.x 27 | :apm-java-branch: 1.x 28 | :apm-rum-branch: 5.x 29 | :apm-node-branch: 4.x 30 | :apm-py-branch: 5.x 31 | :apm-ruby-branch: 3.x 32 | :apm-dotnet-branch: 1.x 33 | -------------------------------------------------------------------------------- /shared/versions/stack/7.5.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 7.5.2 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 7.5.2 6 | :logstash_version: 7.5.2 7 | :elasticsearch_version: 7.5.2 8 | :kibana_version: 7.5.2 9 | :apm_server_version: 7.5.2 10 | :branch: 7.5 11 | :minor-version: 7.5 12 | :major-version: 7.x 13 | :prev-major-version: 6.x 14 | :ecs_version: 1.2 15 | :ece-version-link: current 16 | 17 | ////////// 18 | release-state can be: released | prerelease | unreleased 19 | ////////// 20 | 21 | :release-state: released 22 | 23 | //// 24 | APM Agent versions 25 | //// 26 | :apm-go-branch: 1.x 27 | :apm-java-branch: 1.x 28 | :apm-rum-branch: 5.x 29 | :apm-node-branch: 4.x 30 | :apm-py-branch: 5.x 31 | :apm-ruby-branch: 3.x 32 | :apm-dotnet-branch: 1.x 33 | -------------------------------------------------------------------------------- /shared/versions/stack/7.6.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 7.6.2 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 7.6.2 6 | :logstash_version: 7.6.2 7 | :elasticsearch_version: 7.6.2 8 | :kibana_version: 7.6.2 9 | :apm_server_version: 7.6.2 10 | :branch: 7.6 11 | :minor-version: 7.6 12 | :major-version: 7.x 13 | :prev-major-version: 6.x 14 | :ecs_version: 1.4 15 | :ece-version-link: current 16 | ////////// 17 | release-state can be: released | prerelease | unreleased 18 | ////////// 19 | 20 | :release-state: released 21 | 22 | //// 23 | APM Agent versions 24 | //// 25 | :apm-go-branch: 1.x 26 | :apm-java-branch: 1.x 27 | :apm-rum-branch: 5.x 28 | :apm-node-branch: 4.x 29 | :apm-py-branch: 5.x 30 | :apm-ruby-branch: 3.x 31 | :apm-dotnet-branch: 1.x 32 | -------------------------------------------------------------------------------- /shared/versions/stack/7.7.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 7.7.1 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 7.7.1 6 | :logstash_version: 7.7.1 7 | :elasticsearch_version: 7.7.1 8 | :kibana_version: 7.7.1 9 | :apm_server_version: 7.7.1 10 | :branch: 7.7 11 | :minor-version: 7.7 12 | :major-version: 7.x 13 | :prev-major-version: 6.x 14 | :ecs_version: 1.4 15 | :ece-version-link: current 16 | ////////// 17 | release-state can be: released | prerelease | unreleased 18 | ////////// 19 | 20 | :release-state: released 21 | 22 | //// 23 | APM Agent versions 24 | //// 25 | :apm-go-branch: 1.x 26 | :apm-java-branch: 1.x 27 | :apm-rum-branch: 5.x 28 | :apm-node-branch: 4.x 29 | :apm-py-branch: 5.x 30 | :apm-ruby-branch: 3.x 31 | :apm-dotnet-branch: 1.x 32 | -------------------------------------------------------------------------------- /shared/versions/stack/7.8.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 7.8.1 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 7.8.1 6 | :logstash_version: 7.8.1 7 | :elasticsearch_version: 7.8.1 8 | :kibana_version: 7.8.1 9 | :apm_server_version: 7.8.1 10 | :branch: 7.8 11 | :minor-version: 7.8 12 | :major-version: 7.x 13 | :prev-major-version: 6.x 14 | :major-version-only: 7 15 | :ecs_version: 1.5 16 | :ece-version-link: current 17 | ////////// 18 | release-state can be: released | prerelease | unreleased 19 | ////////// 20 | 21 | :release-state: released 22 | 23 | //// 24 | APM Agent versions 25 | //// 26 | :apm-go-branch: 1.x 27 | :apm-java-branch: 1.x 28 | :apm-rum-branch: 5.x 29 | :apm-node-branch: 4.x 30 | :apm-py-branch: 5.x 31 | :apm-ruby-branch: 3.x 32 | :apm-dotnet-branch: 1.x 33 | -------------------------------------------------------------------------------- /shared/versions/stack/7.9.asciidoc: -------------------------------------------------------------------------------- 1 | :version: 7.9.3 2 | //// 3 | bare_version never includes -alpha or -beta 4 | //// 5 | :bare_version: 7.9.3 6 | :logstash_version: 7.9.3 7 | :elasticsearch_version: 7.9.3 8 | :kibana_version: 7.9.3 9 | :apm_server_version: 7.9.3 10 | :branch: 7.9 11 | :minor-version: 7.9 12 | :major-version: 7.x 13 | :prev-major-version: 6.x 14 | :major-version-only: 7 15 | :ecs_version: 1.5 16 | :ece-version-link: current 17 | ////////// 18 | release-state can be: released | prerelease | unreleased 19 | ////////// 20 | 21 | :release-state: released 22 | 23 | //// 24 | APM Agent versions 25 | //// 26 | :apm-go-branch: 1.x 27 | :apm-java-branch: 1.x 28 | :apm-rum-branch: 5.x 29 | :apm-node-branch: 4.x 30 | :apm-php-branch: master 31 | :apm-py-branch: 5.x 32 | :apm-ruby-branch: 3.x 33 | :apm-dotnet-branch: 1.x 34 | -------------------------------------------------------------------------------- /shared/versions/stack/8.19.asciidoc: -------------------------------------------------------------------------------- 1 | 8.x.asciidoc -------------------------------------------------------------------------------- /shared/versions/stack/README: -------------------------------------------------------------------------------- 1 | Books that are "part of the stack" include these files by looking at their 2 | branch. So the docs for Elasticsearch can use this: 3 | 4 | ``` 5 | include::{asciidoc-dir}/../../shared/versions/stack/{source_branch}.asciidoc[] 6 | ``` 7 | 8 | Which will resolve to the `6.3.asciidoc` file for the 6.3 branch. Or the 9 | `7.2.asciidoc` file for the 7.2 branch. Or `master.asciidoc` for the master 10 | branch. 11 | 12 | NOTE: `current.asciidoc` is never automatically used. 13 | 14 | Books outside of the stack have two choices: 15 | 16 | 1. Use the `current.asciidoc` file. 17 | 2. "Pin" theselves to some version of the stack. 18 | 19 | Using `current.asciidoc` is useful because we'll update it whenever we release 20 | a new version of the stack so the doc will automatically update on release. 21 | 22 | "Pinning" the version of the stack that a book refers to is quite useful for 23 | old versions of books for which we consistently see broken links when we release 24 | new versions of the docs. It could also be useful for books that need special 25 | care when bumping the stack version. 26 | -------------------------------------------------------------------------------- /shared/versions/stack/current.asciidoc: -------------------------------------------------------------------------------- 1 | include::8.18.asciidoc[] 2 | -------------------------------------------------------------------------------- /shared/versions/stack/do-not-delete_legacy-docs.asciidoc: -------------------------------------------------------------------------------- 1 | include::master.asciidoc[] -------------------------------------------------------------------------------- /shared/versions/stack/main.asciidoc: -------------------------------------------------------------------------------- 1 | master.asciidoc -------------------------------------------------------------------------------- /template/Makefile: -------------------------------------------------------------------------------- 1 | include ../common.mk 2 | 3 | .PHONY: check 4 | check: jest 5 | 6 | .PHONY: jest 7 | jest: 8 | $(DOCKER) node_test /node_modules/jest/bin/jest.js ./__test__/** 9 | --------------------------------------------------------------------------------