diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 920891f438fecd..db4a21007a3e22 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -417,7 +417,6 @@ x-pack/examples/gen_ai_streaming_response_example @elastic/response-ops packages/kbn-generate @elastic/kibana-operations packages/kbn-generate-console-definitions @elastic/platform-deployment-management packages/kbn-generate-csv @elastic/appex-sharedux -packages/kbn-generate-csv-types @elastic/appex-sharedux packages/kbn-get-repo-files @elastic/kibana-operations x-pack/plugins/global_search_bar @elastic/appex-sharedux x-pack/plugins/global_search @elastic/appex-sharedux @@ -589,14 +588,17 @@ packages/kbn-repo-path @elastic/kibana-operations packages/kbn-repo-source-classifier @elastic/kibana-operations packages/kbn-repo-source-classifier-cli @elastic/kibana-operations packages/kbn-reporting/common @elastic/appex-sharedux +packages/kbn-reporting/config_server @elastic/appex-sharedux x-pack/examples/reporting_example @elastic/appex-sharedux packages/kbn-reporting/export_types/csv @elastic/appex-sharedux -packages/kbn-reporting/export_types/deprecated @elastic/appex-sharedux -packages/kbn-reporting/export_types_helpers_public @elastic/appex-sharedux -packages/kbn-reporting/export_types_helpers_server @elastic/appex-sharedux -packages/kbn-reporting/export_types/printable_pdf_v2 @elastic/appex-sharedux +packages/kbn-reporting/export_types/csv_common @elastic/appex-sharedux +packages/kbn-reporting/export_types/pdf @elastic/appex-sharedux +packages/kbn-reporting/export_types/pdf_common @elastic/appex-sharedux packages/kbn-reporting/export_types/png @elastic/appex-sharedux +packages/kbn-reporting/export_types/png_common @elastic/appex-sharedux +packages/kbn-reporting/mocks_server @elastic/appex-sharedux x-pack/plugins/reporting @elastic/appex-sharedux +packages/kbn-reporting/server @elastic/appex-sharedux packages/kbn-resizable-layout @elastic/kibana-data-discovery examples/resizable_layout_examples @elastic/kibana-data-discovery x-pack/test/plugin_functional/plugins/resolver_test @elastic/security-solution diff --git a/package.json b/package.json index a7339de21bb83b..4b0efe940f7397 100644 --- a/package.json +++ b/package.json @@ -448,7 +448,6 @@ "@kbn/gen-ai-streaming-response-example-plugin": "link:x-pack/examples/gen_ai_streaming_response_example", "@kbn/generate-console-definitions": "link:packages/kbn-generate-console-definitions", "@kbn/generate-csv": "link:packages/kbn-generate-csv", - "@kbn/generate-csv-types": "link:packages/kbn-generate-csv-types", "@kbn/global-search-bar-plugin": "link:x-pack/plugins/global_search_bar", "@kbn/global-search-plugin": "link:x-pack/plugins/global_search", "@kbn/global-search-providers-plugin": "link:x-pack/plugins/global_search_providers", @@ -594,14 +593,17 @@ "@kbn/repo-info": "link:packages/kbn-repo-info", "@kbn/repo-packages": "link:packages/kbn-repo-packages", "@kbn/reporting-common": "link:packages/kbn-reporting/common", + "@kbn/reporting-config-server": "link:packages/kbn-reporting/config_server", "@kbn/reporting-example-plugin": "link:x-pack/examples/reporting_example", "@kbn/reporting-export-types-csv": "link:packages/kbn-reporting/export_types/csv", - "@kbn/reporting-export-types-deprecated": "link:packages/kbn-reporting/export_types/deprecated", - "@kbn/reporting-export-types-helpers-public": "link:packages/kbn-reporting/export_types_helpers_public", - "@kbn/reporting-export-types-helpers-server": "link:packages/kbn-reporting/export_types_helpers_server", - "@kbn/reporting-export-types-pdf": "link:packages/kbn-reporting/export_types/printable_pdf_v2", + "@kbn/reporting-export-types-csv-common": "link:packages/kbn-reporting/export_types/csv_common", + "@kbn/reporting-export-types-pdf": "link:packages/kbn-reporting/export_types/pdf", + "@kbn/reporting-export-types-pdf-common": "link:packages/kbn-reporting/export_types/pdf_common", "@kbn/reporting-export-types-png": "link:packages/kbn-reporting/export_types/png", + "@kbn/reporting-export-types-png-common": "link:packages/kbn-reporting/export_types/png_common", + "@kbn/reporting-mocks-server": "link:packages/kbn-reporting/mocks_server", "@kbn/reporting-plugin": "link:x-pack/plugins/reporting", + "@kbn/reporting-server": "link:packages/kbn-reporting/server", "@kbn/resizable-layout": "link:packages/kbn-resizable-layout", "@kbn/resizable-layout-examples-plugin": "link:examples/resizable_layout_examples", "@kbn/resolver-test-plugin": "link:x-pack/test/plugin_functional/plugins/resolver_test", diff --git a/packages/kbn-generate-csv-types/README.md b/packages/kbn-generate-csv-types/README.md deleted file mode 100644 index 9046a9264ea6b5..00000000000000 --- a/packages/kbn-generate-csv-types/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @kbn/generate-csv-types - -This package includes interfaces specific to the @kbn/generate-csv package. \ No newline at end of file diff --git a/packages/kbn-generate-csv-types/index.ts b/packages/kbn-generate-csv-types/index.ts deleted file mode 100644 index 3c6836e0683cd7..00000000000000 --- a/packages/kbn-generate-csv-types/index.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { ByteSizeValue } from '@kbn/config-schema'; -import type { SerializedSearchSourceFields } from '@kbn/data-plugin/public'; - -/** - * @internal - * Needed to separate dependencies from reporting - */ -export interface JobParams { - searchSource: SerializedSearchSourceFields; - columns?: string[]; - browserTimezone?: string; -} - -/** - * @internal - * Needed to separate dependencies from reporting - */ -export interface CsvConfig { - checkForFormulas: boolean; - escapeFormulaValues: boolean; - maxSizeBytes: number | ByteSizeValue; - useByteOrderMarkEncoding: boolean; - scroll: { - duration: string; - size: number; - }; -} diff --git a/packages/kbn-generate-csv/src/constants.ts b/packages/kbn-generate-csv/src/constants.ts index 01538035c90940..aa4fb3f1b49802 100644 --- a/packages/kbn-generate-csv/src/constants.ts +++ b/packages/kbn-generate-csv/src/constants.ts @@ -6,9 +6,6 @@ * Side Public License, v 1. */ -/** - * These can not be imported from reporting-common due to potential for circular dependency - */ export const CSV_BOM_CHARS = '\ufeff'; export const CONTENT_TYPE_CSV = 'text/csv'; export const UI_SETTINGS_CSV_SEPARATOR = 'csv:separator'; diff --git a/packages/kbn-generate-csv/src/generate_csv.test.ts b/packages/kbn-generate-csv/src/generate_csv.test.ts index afaeedd2a80219..48d61ca500b315 100644 --- a/packages/kbn-generate-csv/src/generate_csv.test.ts +++ b/packages/kbn-generate-csv/src/generate_csv.test.ts @@ -24,8 +24,9 @@ import { searchSourceInstanceMock } from '@kbn/data-plugin/common/search/search_ import { IScopedSearchClient } from '@kbn/data-plugin/server'; import { dataPluginMock } from '@kbn/data-plugin/server/mocks'; import { FieldFormatsRegistry } from '@kbn/field-formats-plugin/common'; -import { CsvConfig, JobParams } from '@kbn/generate-csv-types'; import { CancellationToken } from '@kbn/reporting-common'; +import { ReportingConfigType } from '@kbn/reporting-config-server'; +import { JobParamsCSV } from '@kbn/reporting-export-types-csv-common'; import { UI_SETTINGS_CSV_QUOTE_VALUES, UI_SETTINGS_CSV_SEPARATOR, @@ -33,16 +34,14 @@ import { } from './constants'; import { CsvGenerator } from './generate_csv'; -const createMockJob = (baseObj: any = {}): JobParams => ({ +const createMockJob = (baseObj: any = {}): JobParamsCSV => ({ ...baseObj, }); -const createMockCancellationToken = () => new CancellationToken(); - describe('CsvGenerator', () => { let mockEsClient: IScopedClusterClient; let mockDataClient: IScopedSearchClient; - let mockConfig: CsvConfig; + let mockConfig: ReportingConfigType['csv']; let mockLogger: jest.Mocked; let uiSettingsClient: IUiSettingsClient; let stream: jest.Mocked; @@ -118,6 +117,7 @@ describe('CsvGenerator', () => { maxSizeBytes: 180000, useByteOrderMarkEncoding: false, scroll: { size: 500, duration: '30s' }, + enablePanelActionDownload: true, }; searchSourceMock.getField = jest.fn((key: string) => { @@ -153,7 +153,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -188,7 +188,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -227,7 +227,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -244,6 +244,7 @@ describe('CsvGenerator', () => { maxSizeBytes: TEST_MAX_SIZE, useByteOrderMarkEncoding: false, scroll: { size: 500, duration: '30s' }, + enablePanelActionDownload: true, }; mockDataClient.search = jest.fn().mockImplementation(() => @@ -275,7 +276,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -334,7 +335,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -404,7 +405,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -442,7 +443,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -489,7 +490,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -543,7 +544,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -585,7 +586,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -623,7 +624,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -661,7 +662,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -701,7 +702,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -739,7 +740,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -757,6 +758,7 @@ describe('CsvGenerator', () => { maxSizeBytes: 180000, useByteOrderMarkEncoding: false, scroll: { size: 500, duration: '30s' }, + enablePanelActionDownload: true, }; mockDataClient.search = jest.fn().mockImplementation(() => Rx.of({ @@ -784,7 +786,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -813,7 +815,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -871,7 +873,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -915,7 +917,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -964,7 +966,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); @@ -1023,7 +1025,7 @@ describe('CsvGenerator', () => { searchSourceStart: mockSearchSourceService, fieldFormatsRegistry: mockFieldFormatsRegistry, }, - createMockCancellationToken(), + new CancellationToken(), mockLogger, stream ); diff --git a/packages/kbn-generate-csv/src/generate_csv.ts b/packages/kbn-generate-csv/src/generate_csv.ts index 2930eb03236808..5d7cb097990029 100644 --- a/packages/kbn-generate-csv/src/generate_csv.ts +++ b/packages/kbn-generate-csv/src/generate_csv.ts @@ -20,14 +20,15 @@ import type { FieldFormatConfig, IFieldFormatsRegistry, } from '@kbn/field-formats-plugin/common'; -import { CsvConfig, JobParams } from '@kbn/generate-csv-types'; -import type { TaskRunResult } from '@kbn/reporting-common/types'; import { AuthenticationExpiredError, CancellationToken, ReportingError, byteSizeValueToNumber, } from '@kbn/reporting-common'; +import type { TaskRunResult } from '@kbn/reporting-common/types'; +import { ReportingConfigType } from '@kbn/reporting-config-server'; +import { JobParamsCSV } from '@kbn/reporting-export-types-csv-common'; import { CONTENT_TYPE_CSV } from './constants'; import { CsvExportSettings, getExportSettings } from './get_export_settings'; @@ -51,8 +52,8 @@ export class CsvGenerator { private csvRowCount = 0; constructor( - private job: Omit, - private config: CsvConfig, + private job: Omit, + private config: ReportingConfigType['csv'], private clients: Clients, private dependencies: Dependencies, private cancellationToken: CancellationToken, diff --git a/packages/kbn-generate-csv/src/get_export_settings.test.ts b/packages/kbn-generate-csv/src/get_export_settings.test.ts index 6d1834880a2b48..70d576dc9a9e67 100644 --- a/packages/kbn-generate-csv/src/get_export_settings.test.ts +++ b/packages/kbn-generate-csv/src/get_export_settings.test.ts @@ -12,23 +12,25 @@ import { savedObjectsClientMock, uiSettingsServiceMock, } from '@kbn/core/server/mocks'; -import { getExportSettings } from './get_export_settings'; -import { CsvConfig } from '@kbn/generate-csv-types'; +import { ReportingConfigType } from '@kbn/reporting-config-server'; + import { UI_SETTINGS_CSV_QUOTE_VALUES, UI_SETTINGS_CSV_SEPARATOR, UI_SETTINGS_DATEFORMAT_TZ, UI_SETTINGS_SEARCH_INCLUDE_FROZEN, } from './constants'; +import { getExportSettings } from './get_export_settings'; describe('getExportSettings', () => { let uiSettingsClient: IUiSettingsClient; - const config: CsvConfig = { + const config: ReportingConfigType['csv'] = { checkForFormulas: true, escapeFormulaValues: false, maxSizeBytes: 180000, scroll: { size: 500, duration: '30s' }, useByteOrderMarkEncoding: false, + enablePanelActionDownload: true, }; const logger = loggingSystemMock.createLogger(); diff --git a/packages/kbn-generate-csv/src/get_export_settings.ts b/packages/kbn-generate-csv/src/get_export_settings.ts index 68d974b8113785..66c73895ec2d82 100644 --- a/packages/kbn-generate-csv/src/get_export_settings.ts +++ b/packages/kbn-generate-csv/src/get_export_settings.ts @@ -9,7 +9,7 @@ import { ByteSizeValue } from '@kbn/config-schema'; import type { IUiSettingsClient, Logger } from '@kbn/core/server'; import { createEscapeValue } from '@kbn/data-plugin/common'; -import { CsvConfig } from '@kbn/generate-csv-types'; +import { ReportingConfigType } from '@kbn/reporting-config-server'; import { CSV_BOM_CHARS, UI_SETTINGS_CSV_QUOTE_VALUES, @@ -35,7 +35,7 @@ export interface CsvExportSettings { export const getExportSettings = async ( client: IUiSettingsClient, - config: CsvConfig, + config: ReportingConfigType['csv'], timezone: string | undefined, logger: Logger ): Promise => { diff --git a/packages/kbn-generate-csv/tsconfig.json b/packages/kbn-generate-csv/tsconfig.json index bea48f784bde1d..f4096aa2c28b59 100644 --- a/packages/kbn-generate-csv/tsconfig.json +++ b/packages/kbn-generate-csv/tsconfig.json @@ -23,7 +23,8 @@ "@kbn/field-formats-plugin", "@kbn/config-schema", "@kbn/i18n", - "@kbn/generate-csv-types", "@kbn/reporting-common", + "@kbn/reporting-export-types-csv-common", + "@kbn/reporting-config-server", ] } diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index fd16fb1cf87407..de07bccf8bbcbe 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -110,7 +110,7 @@ pageLoadAssetSize: presentationUtil: 58834 profiling: 36694 remoteClusters: 51327 - reporting: 288672 + reporting: 57003 rollup: 97204 runtimeFields: 41752 savedObjects: 108518 diff --git a/packages/kbn-reporting/common/README.md b/packages/kbn-reporting/common/README.md index 66e6e706ccad8e..1b53a6ea0de610 100644 --- a/packages/kbn-reporting/common/README.md +++ b/packages/kbn-reporting/common/README.md @@ -2,4 +2,4 @@ Removes any circular dependency from the reporting plugin and the @kbn/generate-csv package. -This package includes the `CancellationToken` class, schema utils, constants, errors that extend `ReportingError`, and metrics such as `TaskRunResult`. This package is shared-common vs specifically server or browser. The `@kbn/reporting-export-types-helpers-server` package has the server side helpers. \ No newline at end of file +This package includes the `CancellationToken` class, schema utils, constants, errors that extend `ReportingError`, and metrics such as `TaskRunResult`. This package is shared-common vs specifically server or browser. The `@kbn/reporting-server` package has the server side helpers. \ No newline at end of file diff --git a/packages/kbn-reporting/common/constants.ts b/packages/kbn-reporting/common/constants.ts index 28bc32e83fd08c..52f8808f3e925e 100644 --- a/packages/kbn-reporting/common/constants.ts +++ b/packages/kbn-reporting/common/constants.ts @@ -6,8 +6,6 @@ * Side Public License, v 1. */ -import * as jobTypes from './job_types'; - export const PLUGIN_ID = 'reporting'; export const REPORTING_TRANSACTION_TYPE = PLUGIN_ID; @@ -16,11 +14,7 @@ export const REPORTING_REDIRECT_LOCATOR_STORE_KEY = '__REPORTING_REDIRECT_LOCATO export const UI_SETTINGS_SEARCH_INCLUDE_FROZEN = 'search:includeFrozen'; export const UI_SETTINGS_CUSTOM_PDF_LOGO = 'xpackReporting:customPdfLogo'; export const UI_SETTINGS_DATEFORMAT_TZ = 'dateFormat:tz'; -export const CSV_REPORTING_ACTION = 'downloadCsvReport'; - -export const CSV_JOB_TYPE = 'csv_searchsource'; -export const CSV_SEARCHSOURCE_IMMEDIATE_TYPE = 'csv_searchsource_immediate'; // Licenses export const LICENSE_TYPE_TRIAL = 'trial' as const; export const LICENSE_TYPE_BASIC = 'basic' as const; @@ -29,22 +23,6 @@ export const LICENSE_TYPE_GOLD = 'gold' as const; export const LICENSE_TYPE_PLATINUM = 'platinum' as const; export const LICENSE_TYPE_ENTERPRISE = 'enterprise' as const; -export const PDF_JOB_TYPE_V2 = 'printable_pdf_v2'; - -export const PDF_JOB_TYPE = 'printable_pdf'; - -export const PNG_JOB_TYPE = 'PNG'; -export const PNG_JOB_TYPE_V2 = 'PNGV2'; -export const USES_HEADLESS_JOB_TYPES = [ - PDF_JOB_TYPE, - PNG_JOB_TYPE, - PDF_JOB_TYPE_V2, - PNG_JOB_TYPE_V2, -]; - -type JobTypeDeclaration = typeof jobTypes; -export type JobTypes = JobTypeDeclaration[keyof JobTypeDeclaration]; - /** * A way to get the client side route for the reporting redirect app. * diff --git a/packages/kbn-reporting/common/index.ts b/packages/kbn-reporting/common/index.ts index 1741a59310e82d..b299ae3a6eff31 100644 --- a/packages/kbn-reporting/common/index.ts +++ b/packages/kbn-reporting/common/index.ts @@ -8,10 +8,7 @@ export * from './constants'; export * from './errors'; -export * as jobTypes from './job_types'; -export * from './report_types'; export * from './schema_utils'; -export { buildKibanaPath } from './build_kibana_path'; export { CancellationToken } from './cancellation_token'; -export { getFullRedirectAppUrl } from './get_full_redirect_app_url'; +export { buildKibanaPath } from './build_kibana_path'; diff --git a/packages/kbn-reporting/common/types.ts b/packages/kbn-reporting/common/types.ts index d56c0dd4a7893a..679ac59432571c 100644 --- a/packages/kbn-reporting/common/types.ts +++ b/packages/kbn-reporting/common/types.ts @@ -6,9 +6,10 @@ * Side Public License, v 1. */ -import { LayoutParams } from '@kbn/screenshotting-plugin/common'; -import type { PerformanceMetrics as ScreenshotMetrics } from '@kbn/screenshotting-plugin/common/types'; -import type { ByteSizeValue } from '@kbn/config-schema'; +import type { + LayoutParams, + PerformanceMetrics as ScreenshotMetrics, +} from '@kbn/screenshotting-plugin/common'; import type { LocatorParams } from './url'; export * from './url'; @@ -84,25 +85,6 @@ export interface BasePayloadV2 extends BaseParamsV2 { isDeprecated?: boolean; } -export interface ReportingConfigType { - encryptionKey?: string; - kibanaServer: { - protocol?: string; - hostname?: string; - port?: number; - }; - csv: { - checkForFormulas: boolean; - escapeFormulaValues: boolean; - useByteOrderMarkEncoding: boolean; - maxSizeBytes: number | ByteSizeValue; - scroll: { - duration: string; - size: number; - }; - }; -} - export interface ReportingServerInfo { basePath: string; protocol: string; @@ -111,3 +93,9 @@ export interface ReportingServerInfo { name: string; uuid: string; } + +export type IlmPolicyMigrationStatus = 'policy-not-found' | 'indices-not-managed-by-policy' | 'ok'; + +export interface IlmPolicyStatusResponse { + status: IlmPolicyMigrationStatus; +} diff --git a/packages/kbn-reporting/config_server/README.md b/packages/kbn-reporting/config_server/README.md new file mode 100644 index 00000000000000..08a8499bdb2d51 --- /dev/null +++ b/packages/kbn-reporting/config_server/README.md @@ -0,0 +1,3 @@ +# @kbn/reporting-config-server + +Empty package generated by @kbn/generate diff --git a/packages/kbn-reporting/export_types_helpers_public/index.ts b/packages/kbn-reporting/config_server/index.ts similarity index 79% rename from packages/kbn-reporting/export_types_helpers_public/index.ts rename to packages/kbn-reporting/config_server/index.ts index d8989abcc3d6f1..57ddce550f9b16 100644 --- a/packages/kbn-reporting/export_types_helpers_public/index.ts +++ b/packages/kbn-reporting/config_server/index.ts @@ -6,4 +6,5 @@ * Side Public License, v 1. */ -export * from './constants'; +export { ConfigSchema } from './schema'; +export type { ReportingConfigType } from './schema'; diff --git a/packages/kbn-reporting/config_server/jest.config.js b/packages/kbn-reporting/config_server/jest.config.js new file mode 100644 index 00000000000000..050f036d10e374 --- /dev/null +++ b/packages/kbn-reporting/config_server/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../..', + roots: ['/packages/kbn-reporting/config_server'], +}; diff --git a/packages/kbn-reporting/config_server/kibana.jsonc b/packages/kbn-reporting/config_server/kibana.jsonc new file mode 100644 index 00000000000000..0f3884ea6d5fff --- /dev/null +++ b/packages/kbn-reporting/config_server/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/reporting-config-server", + "owner": "@elastic/appex-sharedux" +} diff --git a/packages/kbn-reporting/config_server/package.json b/packages/kbn-reporting/config_server/package.json new file mode 100644 index 00000000000000..9df47eaa9f7372 --- /dev/null +++ b/packages/kbn-reporting/config_server/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/reporting-config-server", + "private": true, + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0" +} \ No newline at end of file diff --git a/x-pack/plugins/reporting/server/config/schema.test.ts b/packages/kbn-reporting/config_server/schema.test.ts similarity index 95% rename from x-pack/plugins/reporting/server/config/schema.test.ts rename to packages/kbn-reporting/config_server/schema.test.ts index f30be71db09ea1..58f2cc1a5e8937 100644 --- a/x-pack/plugins/reporting/server/config/schema.test.ts +++ b/packages/kbn-reporting/config_server/schema.test.ts @@ -1,8 +1,9 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import { ConfigSchema } from './schema'; diff --git a/x-pack/plugins/reporting/server/config/schema.ts b/packages/kbn-reporting/config_server/schema.ts similarity index 96% rename from x-pack/plugins/reporting/server/config/schema.ts rename to packages/kbn-reporting/config_server/schema.ts index ff0cda89a693b7..f7c910d9c425bd 100644 --- a/x-pack/plugins/reporting/server/config/schema.ts +++ b/packages/kbn-reporting/config_server/schema.ts @@ -1,8 +1,9 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import { ByteSizeValue, offeringBasedSchema, schema, TypeOf } from '@kbn/config-schema'; diff --git a/packages/kbn-reporting/export_types_helpers_public/tsconfig.json b/packages/kbn-reporting/config_server/tsconfig.json similarity index 81% rename from packages/kbn-reporting/export_types_helpers_public/tsconfig.json rename to packages/kbn-reporting/config_server/tsconfig.json index 187e26d482bcc1..3df73f778fdc18 100644 --- a/packages/kbn-reporting/export_types_helpers_public/tsconfig.json +++ b/packages/kbn-reporting/config_server/tsconfig.json @@ -4,17 +4,16 @@ "outDir": "target/types", "types": [ "jest", - "node", + "node" ] }, "include": [ "**/*.ts", - "**/*.tsx", ], "exclude": [ "target/**/*" ], "kbn_references": [ - "@kbn/utility-types", + "@kbn/config-schema", ] } diff --git a/x-pack/plugins/reporting/server/export_types/csv_searchsource/csv_searchsource.test.ts b/packages/kbn-reporting/export_types/csv/csv_searchsource.test.ts similarity index 89% rename from x-pack/plugins/reporting/server/export_types/csv_searchsource/csv_searchsource.test.ts rename to packages/kbn-reporting/export_types/csv/csv_searchsource.test.ts index b9ea2c4aee6f4d..aef32cbb2f7754 100644 --- a/x-pack/plugins/reporting/server/export_types/csv_searchsource/csv_searchsource.test.ts +++ b/packages/kbn-reporting/export_types/csv/csv_searchsource.test.ts @@ -1,8 +1,9 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ jest.mock('@kbn/generate-csv', () => ({ @@ -20,12 +21,13 @@ import nodeCrypto from '@elastic/node-crypto'; import { coreMock, elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; import { Writable } from 'stream'; import { CancellationToken } from '@kbn/reporting-common'; -import { createMockConfigSchema } from '../../test_helpers'; -import { CsvSearchSourceExportType } from '@kbn/reporting-export-types-csv'; import { discoverPluginMock } from '@kbn/discover-plugin/server/mocks'; import { dataPluginMock } from '@kbn/data-plugin/server/mocks'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { createMockScreenshottingStart } from '@kbn/screenshotting-plugin/server/mock'; +import { CsvSearchSourceExportType } from '.'; + const mockLogger = loggingSystemMock.createLogger(); const encryptionKey = 'tetkey'; const headers = { sid: 'cooltestheaders' }; diff --git a/packages/kbn-reporting/export_types/csv/csv_searchsource.ts b/packages/kbn-reporting/export_types/csv/csv_searchsource.ts index 15f6dc6f1a8987..40634952721378 100644 --- a/packages/kbn-reporting/export_types/csv/csv_searchsource.ts +++ b/packages/kbn-reporting/export_types/csv/csv_searchsource.ts @@ -6,29 +6,33 @@ * Side Public License, v 1. */ +import { Writable } from 'stream'; + import type { DataPluginStart } from '@kbn/data-plugin/server/plugin'; +import type { DiscoverServerPluginStart } from '@kbn/discover-plugin/server'; import { CsvGenerator } from '@kbn/generate-csv'; import { - CSV_JOB_TYPE, - LICENSE_TYPE_TRIAL, + CancellationToken, LICENSE_TYPE_BASIC, LICENSE_TYPE_CLOUD_STANDARD, + LICENSE_TYPE_ENTERPRISE, LICENSE_TYPE_GOLD, LICENSE_TYPE_PLATINUM, - LICENSE_TYPE_ENTERPRISE, - CancellationToken, + LICENSE_TYPE_TRIAL, } from '@kbn/reporting-common'; -import { Writable } from 'stream'; -import type { DiscoverServerPluginStart } from '@kbn/discover-plugin/server'; +import { + CSV_JOB_TYPE, + CSV_REPORT_TYPE, + JobParamsCSV, + TaskPayloadCSV, +} from '@kbn/reporting-export-types-csv-common'; import { BaseExportTypeSetupDeps, BaseExportTypeStartDeps, ExportType, decryptJobHeaders, getFieldFormats, - JobParamsCSV, - TaskPayloadCSV, -} from '@kbn/reporting-export-types-helpers-server'; +} from '@kbn/reporting-server'; type CsvSearchSourceExportTypeSetupDeps = BaseExportTypeSetupDeps; interface CsvSearchSourceExportTypeStartDeps extends BaseExportTypeStartDeps { @@ -42,7 +46,7 @@ export class CsvSearchSourceExportType extends ExportType< CsvSearchSourceExportTypeSetupDeps, CsvSearchSourceExportTypeStartDeps > { - id = 'csv_searchsource'; + id = CSV_REPORT_TYPE; name = CSV_JOB_TYPE; jobType = CSV_JOB_TYPE; jobContentEncoding = 'base64' as const; diff --git a/packages/kbn-reporting/export_types/csv/csv_searchsource_immediate.ts b/packages/kbn-reporting/export_types/csv/csv_searchsource_immediate.ts index bf72577a994dee..a167b728f5e5f9 100644 --- a/packages/kbn-reporting/export_types/csv/csv_searchsource_immediate.ts +++ b/packages/kbn-reporting/export_types/csv/csv_searchsource_immediate.ts @@ -8,13 +8,13 @@ import { Writable } from 'stream'; +import { CustomRequestHandlerContext } from '@kbn/core-http-request-handler-context-server'; import { KibanaRequest } from '@kbn/core-http-server'; import { DataPluginStart } from '@kbn/data-plugin/server/plugin'; import { DiscoverServerPluginStart } from '@kbn/discover-plugin/server'; import { CsvGenerator } from '@kbn/generate-csv'; import { CancellationToken, - CSV_SEARCHSOURCE_IMMEDIATE_TYPE, LICENSE_TYPE_BASIC, LICENSE_TYPE_CLOUD_STANDARD, LICENSE_TYPE_ENTERPRISE, @@ -23,13 +23,16 @@ import { LICENSE_TYPE_TRIAL, } from '@kbn/reporting-common'; import type { TaskRunResult } from '@kbn/reporting-common/types'; +import { + CSV_SEARCHSOURCE_IMMEDIATE_TYPE, + JobParamsDownloadCSV, +} from '@kbn/reporting-export-types-csv-common'; import type { BaseExportTypeSetupDeps, BaseExportTypeStartDeps, - JobParamsDownloadCSV, - ReportingRequestHandlerContext, -} from '@kbn/reporting-export-types-helpers-server'; -import { ExportType, getFieldFormats } from '@kbn/reporting-export-types-helpers-server'; + ReportingServerPluginSetup, +} from '@kbn/reporting-server'; +import { ExportType, getFieldFormats } from '@kbn/reporting-server'; type CsvSearchSourceImmediateExportTypeSetupDeps = BaseExportTypeSetupDeps; interface CsvSearchSourceImmediateExportTypeStartDeps extends BaseExportTypeStartDeps { @@ -37,6 +40,10 @@ interface CsvSearchSourceImmediateExportTypeStartDeps extends BaseExportTypeStar data: DataPluginStart; } +type ReportingRequestHandlerContext = CustomRequestHandlerContext<{ + reporting: ReportingServerPluginSetup | null; +}>; + /* * ImmediateExecuteFn receives the job doc payload because the payload was * generated in the ScheduleFn @@ -129,7 +136,7 @@ export class CsvSearchSourceImmediateExportType extends ExportType< const { warnings } = result; if (warnings) { - warnings.forEach((warning: string | Error) => { + warnings.forEach((warning) => { this.logger.warn(warning); }); } diff --git a/packages/kbn-reporting/export_types/csv/csv_v2.ts b/packages/kbn-reporting/export_types/csv/csv_v2.ts index 830d90fc362e7a..bec3c4ff63e3af 100644 --- a/packages/kbn-reporting/export_types/csv/csv_v2.ts +++ b/packages/kbn-reporting/export_types/csv/csv_v2.ts @@ -7,31 +7,33 @@ */ import Boom from '@hapi/boom'; -import { KibanaRequest } from '@kbn/core/server'; -import type { DiscoverServerPluginStart } from '@kbn/discover-plugin/server'; +import { Writable } from 'stream'; + +import type { KibanaRequest } from '@kbn/core/server'; import type { DataPluginStart } from '@kbn/data-plugin/server/plugin'; +import type { DiscoverServerPluginStart } from '@kbn/discover-plugin/server'; import { CsvGenerator } from '@kbn/generate-csv'; -import { Writable } from 'stream'; import { - CSV_REPORT_TYPE_V2, - LICENSE_TYPE_TRIAL, + CancellationToken, LICENSE_TYPE_BASIC, LICENSE_TYPE_CLOUD_STANDARD, + LICENSE_TYPE_ENTERPRISE, LICENSE_TYPE_GOLD, LICENSE_TYPE_PLATINUM, - LICENSE_TYPE_ENTERPRISE, - CancellationToken, + LICENSE_TYPE_TRIAL, } from '@kbn/reporting-common'; import { - BaseExportTypeSetupDeps, - BaseExportTypeStartDeps, - decryptJobHeaders, - ExportType, - getFieldFormats, + CSV_REPORT_TYPE_V2, JobParamsCsvFromSavedObject, - ReportingRequestHandlerContext, TaskPayloadCsvFromSavedObject, -} from '@kbn/reporting-export-types-helpers-server'; +} from '@kbn/reporting-export-types-csv-common'; +import { + ExportType, + decryptJobHeaders, + getFieldFormats, + type BaseExportTypeSetupDeps, + type BaseExportTypeStartDeps, +} from '@kbn/reporting-server'; type CsvV2ExportTypeSetupDeps = BaseExportTypeSetupDeps; export interface CsvV2ExportTypeStartDeps extends BaseExportTypeStartDeps { @@ -66,7 +68,7 @@ export class CsvV2ExportType extends ExportType< public createJob = async ( jobParams: JobParamsCsvFromSavedObject, - _context: ReportingRequestHandlerContext, + _context: unknown, req: KibanaRequest ) => { // 1. Validation of locatorParams diff --git a/packages/kbn-reporting/export_types/csv/tsconfig.json b/packages/kbn-reporting/export_types/csv/tsconfig.json index 0c003fa6af8fbb..d1351d6c6be8ce 100644 --- a/packages/kbn-reporting/export_types/csv/tsconfig.json +++ b/packages/kbn-reporting/export_types/csv/tsconfig.json @@ -22,6 +22,10 @@ "@kbn/data-plugin", "@kbn/generate-csv", "@kbn/core-http-server", - "@kbn/reporting-export-types-helpers-server", + "@kbn/reporting-server", + "@kbn/reporting-export-types-csv-common", + "@kbn/reporting-mocks-server", + "@kbn/screenshotting-plugin", + "@kbn/core-http-request-handler-context-server", ] } diff --git a/packages/kbn-reporting/export_types/csv_common/README.md b/packages/kbn-reporting/export_types/csv_common/README.md new file mode 100644 index 00000000000000..c74e390257a699 --- /dev/null +++ b/packages/kbn-reporting/export_types/csv_common/README.md @@ -0,0 +1,3 @@ +# @kbn/reporting-export-types-csv-common + +Empty package generated by @kbn/generate diff --git a/packages/kbn-reporting/common/report_types.ts b/packages/kbn-reporting/export_types/csv_common/constants.ts similarity index 68% rename from packages/kbn-reporting/common/report_types.ts rename to packages/kbn-reporting/export_types/csv_common/constants.ts index 5e67b256afda82..d6db2a8c635e20 100644 --- a/packages/kbn-reporting/common/report_types.ts +++ b/packages/kbn-reporting/export_types/csv_common/constants.ts @@ -6,12 +6,8 @@ * Side Public License, v 1. */ -// Export Type Definitions +export const CSV_JOB_TYPE = 'csv_searchsource'; export const CSV_REPORT_TYPE = 'csv_searchsource'; -export const CSV_REPORT_TYPE_V2 = 'csv_v2'; - -export const PDF_REPORT_TYPE = 'printablePdf'; -export const PDF_REPORT_TYPE_V2 = 'printablePdfV2'; -export const PNG_REPORT_TYPE = 'PNG'; -export const PNG_REPORT_TYPE_V2 = 'pngV2'; +export const CSV_JOB_TYPE_V2 = 'csv_v2'; +export const CSV_REPORT_TYPE_V2 = 'csv_v2'; diff --git a/packages/kbn-reporting/export_types/csv_common/index.ts b/packages/kbn-reporting/export_types/csv_common/index.ts new file mode 100644 index 00000000000000..d15efb06e36828 --- /dev/null +++ b/packages/kbn-reporting/export_types/csv_common/index.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { SerializedSearchSourceFields } from '@kbn/data-plugin/public'; +import type { + BaseParams, + BaseParamsV2, + BasePayload, + BasePayloadV2, +} from '@kbn/reporting-common/types'; + +export * from './constants'; + +export interface JobParamsDownloadCSV { + browserTimezone: string; + title: string; + searchSource: SerializedSearchSourceFields; + columns?: string[]; +} + +interface BaseParamsCSV { + searchSource: SerializedSearchSourceFields; + columns?: string[]; +} + +export type JobParamsCSV = BaseParamsCSV & BaseParams; +export type TaskPayloadCSV = BaseParamsCSV & BasePayload; + +interface CsvFromSavedObjectBase { + objectType: 'search'; +} + +/** + * Makes title optional, as it can be derived from the saved search object + */ +export type JobParamsCsvFromSavedObject = CsvFromSavedObjectBase & + Omit & { title?: string }; + +export type TaskPayloadCsvFromSavedObject = CsvFromSavedObjectBase & BasePayloadV2; + +export const CSV_REPORTING_ACTION = 'downloadCsvReport'; + +export const CSV_SEARCHSOURCE_IMMEDIATE_TYPE = 'csv_searchsource_immediate'; + +// This is deprecated because it lacks support for runtime fields +// but the extension points are still needed for pre-existing scripted automation, until 8.0 +export const CSV_REPORT_TYPE_DEPRECATED = 'CSV'; +export const CSV_JOB_TYPE_DEPRECATED = 'csv'; diff --git a/packages/kbn-reporting/export_types/csv_common/jest.config.js b/packages/kbn-reporting/export_types/csv_common/jest.config.js new file mode 100644 index 00000000000000..6e39e463a6f684 --- /dev/null +++ b/packages/kbn-reporting/export_types/csv_common/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/kbn-reporting/export_types/csv_common'], +}; diff --git a/packages/kbn-reporting/export_types/csv_common/kibana.jsonc b/packages/kbn-reporting/export_types/csv_common/kibana.jsonc new file mode 100644 index 00000000000000..10e347c55ab5e7 --- /dev/null +++ b/packages/kbn-reporting/export_types/csv_common/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/reporting-export-types-csv-common", + "owner": "@elastic/appex-sharedux" +} diff --git a/packages/kbn-reporting/export_types/csv_common/package.json b/packages/kbn-reporting/export_types/csv_common/package.json new file mode 100644 index 00000000000000..c1785bca2b2085 --- /dev/null +++ b/packages/kbn-reporting/export_types/csv_common/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/reporting-export-types-csv-common", + "private": true, + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0" +} \ No newline at end of file diff --git a/packages/kbn-generate-csv-types/tsconfig.json b/packages/kbn-reporting/export_types/csv_common/tsconfig.json similarity index 75% rename from packages/kbn-generate-csv-types/tsconfig.json rename to packages/kbn-reporting/export_types/csv_common/tsconfig.json index a6242129ed177b..27592ed3e537f8 100644 --- a/packages/kbn-generate-csv-types/tsconfig.json +++ b/packages/kbn-reporting/export_types/csv_common/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../../../tsconfig.base.json", "compilerOptions": { "outDir": "target/types", "types": [ @@ -14,7 +14,7 @@ "target/**/*" ], "kbn_references": [ - "@kbn/config-schema", "@kbn/data-plugin", + "@kbn/reporting-common", ] } diff --git a/packages/kbn-reporting/export_types/deprecated/kibana.jsonc b/packages/kbn-reporting/export_types/deprecated/kibana.jsonc deleted file mode 100644 index 5902775ebd638a..00000000000000 --- a/packages/kbn-reporting/export_types/deprecated/kibana.jsonc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "type": "shared-server", - "id": "@kbn/reporting-export-types-deprecated", - "owner": "@elastic/appex-sharedux" - } \ No newline at end of file diff --git a/packages/kbn-reporting/export_types/deprecated/printable_pdf.ts b/packages/kbn-reporting/export_types/pdf/deprecated.ts similarity index 91% rename from packages/kbn-reporting/export_types/deprecated/printable_pdf.ts rename to packages/kbn-reporting/export_types/pdf/deprecated.ts index 006cb75b90ff78..21f6d8881a60af 100644 --- a/packages/kbn-reporting/export_types/deprecated/printable_pdf.ts +++ b/packages/kbn-reporting/export_types/pdf/deprecated.ts @@ -19,35 +19,28 @@ import { LICENSE_TYPE_GOLD, LICENSE_TYPE_PLATINUM, LICENSE_TYPE_TRIAL, - PDF_JOB_TYPE, REPORTING_REDIRECT_LOCATOR_STORE_KEY, REPORTING_TRANSACTION_TYPE, } from '@kbn/reporting-common'; -import { BaseParams, TaskRunResult } from '@kbn/reporting-common/types'; +import { TaskRunResult } from '@kbn/reporting-common/types'; import { - ExportType, + JobParamsPDFDeprecated, + PDF_JOB_TYPE, TaskPayloadPDF, +} from '@kbn/reporting-export-types-pdf-common'; +import { + ExportType, decryptJobHeaders, generatePdfObservable, getCustomLogo, getFullUrls, validateUrls, -} from '@kbn/reporting-export-types-helpers-server'; -import { LayoutParams } from '@kbn/screenshotting-plugin/common'; +} from '@kbn/reporting-server'; import type { PdfScreenshotOptions, PdfScreenshotResult } from '@kbn/screenshotting-plugin/server'; -interface BaseParamsPDF { - layout: LayoutParams; - relativeUrls: string[]; - isDeprecated?: boolean; -} - -// Job params: structure of incoming user request data, after being parsed from RISON - /** * @deprecated */ -export type JobParamsPDFDeprecated = BaseParamsPDF & BaseParams; export class PdfV1ExportType extends ExportType { id = 'printablePdf'; name = 'PDF'; diff --git a/packages/kbn-reporting/export_types/printable_pdf_v2/index.ts b/packages/kbn-reporting/export_types/pdf/index.ts similarity index 89% rename from packages/kbn-reporting/export_types/printable_pdf_v2/index.ts rename to packages/kbn-reporting/export_types/pdf/index.ts index e1285219d01ca9..efc80348480b6e 100644 --- a/packages/kbn-reporting/export_types/printable_pdf_v2/index.ts +++ b/packages/kbn-reporting/export_types/pdf/index.ts @@ -7,3 +7,4 @@ */ export { PdfExportType } from './printable_pdf_v2'; +export { PdfV1ExportType } from './deprecated'; diff --git a/packages/kbn-reporting/export_types/printable_pdf_v2/kibana.jsonc b/packages/kbn-reporting/export_types/pdf/kibana.jsonc similarity index 100% rename from packages/kbn-reporting/export_types/printable_pdf_v2/kibana.jsonc rename to packages/kbn-reporting/export_types/pdf/kibana.jsonc diff --git a/packages/kbn-reporting/export_types/printable_pdf_v2/package.json b/packages/kbn-reporting/export_types/pdf/package.json similarity index 100% rename from packages/kbn-reporting/export_types/printable_pdf_v2/package.json rename to packages/kbn-reporting/export_types/pdf/package.json diff --git a/x-pack/plugins/reporting/server/export_types/printable_pdf/printable_pdf.test.ts b/packages/kbn-reporting/export_types/pdf/printable_pdf.test.ts similarity index 87% rename from x-pack/plugins/reporting/server/export_types/printable_pdf/printable_pdf.test.ts rename to packages/kbn-reporting/export_types/pdf/printable_pdf.test.ts index e94769fadee602..079ebf8f69688b 100644 --- a/x-pack/plugins/reporting/server/export_types/printable_pdf/printable_pdf.test.ts +++ b/packages/kbn-reporting/export_types/pdf/printable_pdf.test.ts @@ -1,24 +1,24 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ -import { coreMock, elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; +import { of } from 'rxjs'; import { Writable } from 'stream'; + +import { coreMock, elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; import { CancellationToken } from '@kbn/reporting-common'; -import { - generatePdfObservable, - cryptoFactory, - TaskPayloadPDF, -} from '@kbn/reporting-export-types-helpers-server'; +import { TaskPayloadPDF } from '@kbn/reporting-export-types-pdf-common'; +import { cryptoFactory, generatePdfObservable } from '@kbn/reporting-server'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { ScreenshottingStart } from '@kbn/screenshotting-plugin/server'; -import { createMockConfigSchema } from '../../test_helpers'; -import { PdfV1ExportType } from '@kbn/reporting-export-types-deprecated'; -import { of } from 'rxjs'; -jest.mock('@kbn/reporting-export-types-helpers-server/generate_pdf'); +import { PdfV1ExportType } from '.'; + +jest.mock('@kbn/reporting-server/generate_pdf'); let content: string; let mockPdfExportType: PdfV1ExportType; diff --git a/x-pack/plugins/reporting/server/export_types/printable_pdf/printable_pdf_v2.test.ts b/packages/kbn-reporting/export_types/pdf/printable_pdf_v2.test.ts similarity index 86% rename from x-pack/plugins/reporting/server/export_types/printable_pdf/printable_pdf_v2.test.ts rename to packages/kbn-reporting/export_types/pdf/printable_pdf_v2.test.ts index c43f4b701749c5..4706542ac42846 100644 --- a/x-pack/plugins/reporting/server/export_types/printable_pdf/printable_pdf_v2.test.ts +++ b/packages/kbn-reporting/export_types/pdf/printable_pdf_v2.test.ts @@ -1,25 +1,25 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ +import { of } from 'rxjs'; +import type { Writable } from 'stream'; + import { coreMock, elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; import { CancellationToken } from '@kbn/reporting-common'; -import { LocatorParams } from '@kbn/reporting-common/types'; -import { - generatePdfObservableV2, - cryptoFactory, - TaskPayloadPDFV2, -} from '@kbn/reporting-export-types-helpers-server'; -import { PdfExportType } from '@kbn/reporting-export-types-pdf'; +import type { LocatorParams } from '@kbn/reporting-common/types'; +import type { TaskPayloadPDFV2 } from '@kbn/reporting-export-types-pdf-common'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; +import { cryptoFactory, generatePdfObservableV2 } from '@kbn/reporting-server'; import type { ScreenshottingStart } from '@kbn/screenshotting-plugin/server'; -import { of } from 'rxjs'; -import type { Writable } from 'stream'; -import { createMockConfigSchema } from '../../test_helpers'; -jest.mock('@kbn/reporting-export-types-helpers-server/generate_pdf_v2'); +import { PdfExportType } from '.'; + +jest.mock('@kbn/reporting-server/generate_pdf_v2'); let content: string; let mockPdfExportType: PdfExportType; diff --git a/packages/kbn-reporting/export_types/printable_pdf_v2/printable_pdf_v2.ts b/packages/kbn-reporting/export_types/pdf/printable_pdf_v2.ts similarity index 92% rename from packages/kbn-reporting/export_types/printable_pdf_v2/printable_pdf_v2.ts rename to packages/kbn-reporting/export_types/pdf/printable_pdf_v2.ts index 6c6693a195e1f7..35204cf7368b68 100644 --- a/packages/kbn-reporting/export_types/printable_pdf_v2/printable_pdf_v2.ts +++ b/packages/kbn-reporting/export_types/pdf/printable_pdf_v2.ts @@ -7,43 +7,35 @@ */ import apm from 'elastic-apm-node'; -import { - catchError, - firstValueFrom, - fromEventPattern, - map, - mergeMap, - Observable, - of, - takeUntil, - tap, - throwError, -} from 'rxjs'; +import * as Rx from 'rxjs'; +import { catchError, map, mergeMap, Observable, of, takeUntil, tap } from 'rxjs'; import { Writable } from 'stream'; import { Headers } from '@kbn/core/server'; -import type { TaskRunResult } from '@kbn/reporting-common/types'; import { CancellationToken, - getFullRedirectAppUrl, LICENSE_TYPE_CLOUD_STANDARD, LICENSE_TYPE_ENTERPRISE, LICENSE_TYPE_GOLD, LICENSE_TYPE_PLATINUM, LICENSE_TYPE_TRIAL, - PDF_JOB_TYPE_V2, - PDF_REPORT_TYPE_V2, REPORTING_REDIRECT_LOCATOR_STORE_KEY, REPORTING_TRANSACTION_TYPE, } from '@kbn/reporting-common'; +import type { TaskRunResult } from '@kbn/reporting-common/types'; +import { + JobParamsPDFV2, + PDF_JOB_TYPE_V2, + PDF_REPORT_TYPE_V2, + TaskPayloadPDFV2, +} from '@kbn/reporting-export-types-pdf-common'; import { decryptJobHeaders, + getFullRedirectAppUrl, ExportType, generatePdfObservableV2, getCustomLogo, - JobParamsPDFV2, - TaskPayloadPDFV2, -} from '@kbn/reporting-export-types-helpers-server'; +} from '@kbn/reporting-server'; import type { PdfScreenshotOptions, PdfScreenshotResult } from '@kbn/screenshotting-plugin/server'; import { UrlOrUrlWithContext } from '@kbn/screenshotting-plugin/server/screenshots'; @@ -109,7 +101,7 @@ export class PdfExportType extends ExportType let apmGeneratePdf: { end: () => void } | null | undefined; const { encryptionKey } = this.config; - const process$: Observable = of(1).pipe( + const process$: Rx.Observable = of(1).pipe( mergeMap(() => decryptJobHeaders(encryptionKey, payload.headers, jobLogger)), mergeMap(async (headers: Headers) => { const fakeRequest = this.getFakeRequest(headers, payload.spaceId, jobLogger); @@ -173,13 +165,13 @@ export class PdfExportType extends ExportType })), catchError((err) => { jobLogger.error(err); - return throwError(() => err); + return Rx.throwError(() => err); }) ); - const stop$ = fromEventPattern(cancellationToken.on); + const stop$ = Rx.fromEventPattern(cancellationToken.on); apmTrans.end(); - return firstValueFrom(process$.pipe(takeUntil(stop$))); + return Rx.firstValueFrom(process$.pipe(takeUntil(stop$))); }; } diff --git a/packages/kbn-reporting/export_types/deprecated/tsconfig.json b/packages/kbn-reporting/export_types/pdf/tsconfig.json similarity index 74% rename from packages/kbn-reporting/export_types/deprecated/tsconfig.json rename to packages/kbn-reporting/export_types/pdf/tsconfig.json index 2cce985a0fcc4e..9f778e9cef3bf1 100644 --- a/packages/kbn-reporting/export_types/deprecated/tsconfig.json +++ b/packages/kbn-reporting/export_types/pdf/tsconfig.json @@ -15,9 +15,12 @@ "target/**/*" ], "kbn_references": [ + "@kbn/core", "@kbn/reporting-common", - "@kbn/licensing-plugin", "@kbn/screenshotting-plugin", - "@kbn/reporting-export-types-helpers-server", + "@kbn/reporting-server", + "@kbn/licensing-plugin", + "@kbn/reporting-export-types-pdf-common", + "@kbn/reporting-mocks-server", ] } diff --git a/packages/kbn-reporting/export_types/pdf_common/README.md b/packages/kbn-reporting/export_types/pdf_common/README.md new file mode 100644 index 00000000000000..24fe1383b42f03 --- /dev/null +++ b/packages/kbn-reporting/export_types/pdf_common/README.md @@ -0,0 +1,3 @@ +# @kbn/reporting-export-types-pdf-common + +Empty package generated by @kbn/generate diff --git a/packages/kbn-reporting/common/job_types.ts b/packages/kbn-reporting/export_types/pdf_common/constants.ts similarity index 78% rename from packages/kbn-reporting/common/job_types.ts rename to packages/kbn-reporting/export_types/pdf_common/constants.ts index 73de60448778af..a91a3da8602d1c 100644 --- a/packages/kbn-reporting/common/job_types.ts +++ b/packages/kbn-reporting/export_types/pdf_common/constants.ts @@ -6,10 +6,8 @@ * Side Public License, v 1. */ -export const CSV_JOB_TYPE = 'csv_searchsource'; - export const PDF_JOB_TYPE = 'printable_pdf'; export const PDF_JOB_TYPE_V2 = 'printable_pdf_v2'; -export const PNG_JOB_TYPE = 'PNG'; -export const PNG_JOB_TYPE_V2 = 'PNGV2'; +export const PDF_REPORT_TYPE = 'printablePdf'; +export const PDF_REPORT_TYPE_V2 = 'printablePdfV2'; diff --git a/packages/kbn-reporting/export_types/pdf_common/index.ts b/packages/kbn-reporting/export_types/pdf_common/index.ts new file mode 100644 index 00000000000000..f1ff9a0d02ecf2 --- /dev/null +++ b/packages/kbn-reporting/export_types/pdf_common/index.ts @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { BaseParams, BasePayload, LocatorParams } from '@kbn/reporting-common/types'; +import { LayoutParams } from '@kbn/screenshotting-plugin/common'; + +export * from './constants'; + +/** + * Structure of stored job data provided by create_job + */ +export interface TaskPayloadPDF extends BasePayload { + layout: LayoutParams; + forceNow?: string; + objects: Array<{ relativeUrl: string }>; +} + +interface BaseParamsPDFV2 { + layout: LayoutParams; + + /** + * This value is used to re-create the same visual state as when the report was requested as well as navigate to the correct page. + */ + locatorParams: LocatorParams[]; +} + +// Job params: structure of incoming user request data, after being parsed from RISON +export type JobParamsPDFV2 = BaseParamsPDFV2 & BaseParams; + +/** + * Public-facing interface + * Apps should use this interface to build job params. + * browserTimezone and version is provided by Reporting + * @public + */ +export type JobAppParamsPDFV2 = Omit; + +// Job payload: structure of stored job data provided by create_job +export interface TaskPayloadPDFV2 extends BasePayload, BaseParamsPDFV2 { + layout: LayoutParams; + /** + * The value of forceNow is injected server-side every time a given report is generated. + */ + forceNow: string; +} + +/** + * @deprecated + */ +interface BaseParamsPDF { + layout: LayoutParams; + relativeUrls: string[]; + isDeprecated?: boolean; +} + +/** + * @deprecated + */ +export type JobParamsPDFDeprecated = BaseParamsPDF & BaseParams; diff --git a/packages/kbn-reporting/export_types/pdf_common/jest.config.js b/packages/kbn-reporting/export_types/pdf_common/jest.config.js new file mode 100644 index 00000000000000..a9935a9a754627 --- /dev/null +++ b/packages/kbn-reporting/export_types/pdf_common/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/kbn-reporting/export_types/pdf_common'], +}; diff --git a/packages/kbn-reporting/export_types/pdf_common/kibana.jsonc b/packages/kbn-reporting/export_types/pdf_common/kibana.jsonc new file mode 100644 index 00000000000000..a9aecce082861b --- /dev/null +++ b/packages/kbn-reporting/export_types/pdf_common/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/reporting-export-types-pdf-common", + "owner": "@elastic/appex-sharedux" +} diff --git a/packages/kbn-reporting/export_types/pdf_common/package.json b/packages/kbn-reporting/export_types/pdf_common/package.json new file mode 100644 index 00000000000000..1d0dc201e4ea8e --- /dev/null +++ b/packages/kbn-reporting/export_types/pdf_common/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/reporting-export-types-pdf-common", + "private": true, + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0" +} \ No newline at end of file diff --git a/packages/kbn-reporting/export_types/printable_pdf_v2/tsconfig.json b/packages/kbn-reporting/export_types/pdf_common/tsconfig.json similarity index 75% rename from packages/kbn-reporting/export_types/printable_pdf_v2/tsconfig.json rename to packages/kbn-reporting/export_types/pdf_common/tsconfig.json index 4e3fe44d1814d8..cb0a7b461eda8a 100644 --- a/packages/kbn-reporting/export_types/printable_pdf_v2/tsconfig.json +++ b/packages/kbn-reporting/export_types/pdf_common/tsconfig.json @@ -4,20 +4,17 @@ "outDir": "target/types", "types": [ "jest", - "node", + "node" ] }, "include": [ "**/*.ts", - "**/*.tsx", ], "exclude": [ "target/**/*" ], "kbn_references": [ - "@kbn/core", - "@kbn/reporting-common", "@kbn/screenshotting-plugin", - "@kbn/reporting-export-types-helpers-server", + "@kbn/reporting-common", ] } diff --git a/x-pack/plugins/reporting/server/export_types/png_v2/png_v2.test.ts b/packages/kbn-reporting/export_types/png/png_v2.test.ts similarity index 87% rename from x-pack/plugins/reporting/server/export_types/png_v2/png_v2.test.ts rename to packages/kbn-reporting/export_types/png/png_v2.test.ts index af353afa169163..734e00a751deda 100644 --- a/x-pack/plugins/reporting/server/export_types/png_v2/png_v2.test.ts +++ b/packages/kbn-reporting/export_types/png/png_v2.test.ts @@ -1,25 +1,25 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ import * as Rx from 'rxjs'; -import { coreMock, elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; import { Writable } from 'stream'; + +import { coreMock, elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; import { CancellationToken } from '@kbn/reporting-common'; import type { LocatorParams } from '@kbn/reporting-common/types'; -import { ScreenshottingStart } from '@kbn/screenshotting-plugin/server'; -import { PngExportType } from '@kbn/reporting-export-types-png'; -import { createMockConfigSchema } from '../../test_helpers'; -import { - generatePngObservable, - cryptoFactory, - TaskPayloadPNGV2, -} from '@kbn/reporting-export-types-helpers-server'; - -jest.mock('@kbn/reporting-export-types-helpers-server/generate_png'); +import type { TaskPayloadPNGV2 } from '@kbn/reporting-export-types-png-common'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; +import { cryptoFactory, generatePngObservable } from '@kbn/reporting-server'; +import type { ScreenshottingStart } from '@kbn/screenshotting-plugin/server'; + +import { PngExportType } from '.'; + +jest.mock('@kbn/reporting-server/generate_png'); let content: string; let mockPngExportType: PngExportType; diff --git a/packages/kbn-reporting/export_types/png/png_v2.ts b/packages/kbn-reporting/export_types/png/png_v2.ts index ac2879d777d71d..2aec87a1fdc0a2 100644 --- a/packages/kbn-reporting/export_types/png/png_v2.ts +++ b/packages/kbn-reporting/export_types/png/png_v2.ts @@ -23,25 +23,27 @@ import { Writable } from 'stream'; import type { LicenseType } from '@kbn/licensing-plugin/server'; import { CancellationToken, - getFullRedirectAppUrl, LICENSE_TYPE_CLOUD_STANDARD, LICENSE_TYPE_ENTERPRISE, LICENSE_TYPE_GOLD, LICENSE_TYPE_PLATINUM, LICENSE_TYPE_TRIAL, - PNG_JOB_TYPE_V2, - PNG_REPORT_TYPE_V2, REPORTING_REDIRECT_LOCATOR_STORE_KEY, REPORTING_TRANSACTION_TYPE, } from '@kbn/reporting-common'; import type { LocatorParams, TaskRunResult } from '@kbn/reporting-common/types'; +import { + JobParamsPNGV2, + PNG_JOB_TYPE_V2, + PNG_REPORT_TYPE_V2, + TaskPayloadPNGV2, +} from '@kbn/reporting-export-types-png-common'; import { decryptJobHeaders, + getFullRedirectAppUrl, ExportType, generatePngObservable, - JobParamsPNGV2, - TaskPayloadPNGV2, -} from '@kbn/reporting-export-types-helpers-server'; +} from '@kbn/reporting-server'; import type { PngScreenshotOptions, PngScreenshotResult } from '@kbn/screenshotting-plugin/server'; import type { Context } from '@kbn/screenshotting-plugin/server/browsers'; import { SerializableRecord } from '@kbn/utility-types'; diff --git a/packages/kbn-reporting/export_types/png/tsconfig.json b/packages/kbn-reporting/export_types/png/tsconfig.json index 7e133651657996..eea9041934e26f 100644 --- a/packages/kbn-reporting/export_types/png/tsconfig.json +++ b/packages/kbn-reporting/export_types/png/tsconfig.json @@ -20,6 +20,9 @@ "@kbn/licensing-plugin", "@kbn/utility-types", "@kbn/screenshotting-plugin", - "@kbn/reporting-export-types-helpers-server", + "@kbn/reporting-server", + "@kbn/reporting-export-types-png-common", + "@kbn/core", + "@kbn/reporting-mocks-server", ] } diff --git a/packages/kbn-reporting/export_types/png_common/README.md b/packages/kbn-reporting/export_types/png_common/README.md new file mode 100644 index 00000000000000..c88edfc9cf8f08 --- /dev/null +++ b/packages/kbn-reporting/export_types/png_common/README.md @@ -0,0 +1,3 @@ +# @kbn/reporting-export-types-png-common + +Empty package generated by @kbn/generate diff --git a/packages/kbn-reporting/export_types/png_common/constants.ts b/packages/kbn-reporting/export_types/png_common/constants.ts new file mode 100644 index 00000000000000..b19732cd417ce8 --- /dev/null +++ b/packages/kbn-reporting/export_types/png_common/constants.ts @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export const PNG_REPORT_TYPE = 'PNG'; +export const PNG_REPORT_TYPE_V2 = 'pngV2'; + +export const PNG_JOB_TYPE = 'PNG'; +export const PNG_JOB_TYPE_V2 = 'PNGV2'; diff --git a/packages/kbn-reporting/export_types/png_common/index.ts b/packages/kbn-reporting/export_types/png_common/index.ts new file mode 100644 index 00000000000000..4b2b381fbc059d --- /dev/null +++ b/packages/kbn-reporting/export_types/png_common/index.ts @@ -0,0 +1,41 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { BaseParams, BasePayload, LocatorParams } from '@kbn/reporting-common/types'; +import { LayoutParams } from '@kbn/screenshotting-plugin/common'; + +export * from './constants'; + +interface BaseParamsPNG { + layout: LayoutParams; + forceNow?: string; + relativeUrl: string; +} + +export type JobParamsPNGDeprecated = BaseParamsPNG & BaseParams; + +// Job payload: structure of stored job data provided by create_job +export type TaskPayloadPNG = BaseParamsPNG & BasePayload; + +export interface JobParamsPNGV2 extends BaseParams { + layout: LayoutParams; + /** + * This value is used to re-create the same visual state as when the report was requested as well as navigate to the correct page. + */ + locatorParams: LocatorParams; +} + +// Job payload: structure of stored job data provided by create_job +export interface TaskPayloadPNGV2 extends BasePayload { + layout: LayoutParams; + forceNow: string; + /** + * Even though we only ever handle one locator for a PNG, we store it as an array for consistency with how PDFs are stored + */ + locatorParams: LocatorParams[]; +} diff --git a/packages/kbn-reporting/export_types/png_common/jest.config.js b/packages/kbn-reporting/export_types/png_common/jest.config.js new file mode 100644 index 00000000000000..ea305c905ed876 --- /dev/null +++ b/packages/kbn-reporting/export_types/png_common/jest.config.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../../..', + roots: ['/packages/kbn-reporting/export_types/png_common'], +}; diff --git a/packages/kbn-reporting/export_types/png_common/kibana.jsonc b/packages/kbn-reporting/export_types/png_common/kibana.jsonc new file mode 100644 index 00000000000000..0c0b7259864ce7 --- /dev/null +++ b/packages/kbn-reporting/export_types/png_common/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/reporting-export-types-png-common", + "owner": "@elastic/appex-sharedux" +} diff --git a/packages/kbn-reporting/export_types/png_common/package.json b/packages/kbn-reporting/export_types/png_common/package.json new file mode 100644 index 00000000000000..4c25b1d74e04b9 --- /dev/null +++ b/packages/kbn-reporting/export_types/png_common/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/reporting-export-types-png-common", + "private": true, + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0" +} \ No newline at end of file diff --git a/packages/kbn-reporting/export_types/png_common/tsconfig.json b/packages/kbn-reporting/export_types/png_common/tsconfig.json new file mode 100644 index 00000000000000..cb0a7b461eda8a --- /dev/null +++ b/packages/kbn-reporting/export_types/png_common/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/screenshotting-plugin", + "@kbn/reporting-common", + ] +} diff --git a/packages/kbn-reporting/export_types_helpers_public/constants.ts b/packages/kbn-reporting/export_types_helpers_public/constants.ts deleted file mode 100644 index 47b078d84eb09a..00000000000000 --- a/packages/kbn-reporting/export_types_helpers_public/constants.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { SerializableRecord } from '@kbn/utility-types'; - -export const CSV_SEARCHSOURCE_IMMEDIATE_TYPE = 'csv_searchsource_immediate'; -// Licenses -export const LICENSE_TYPE_TRIAL = 'trial' as const; - -export type IlmPolicyMigrationStatus = 'policy-not-found' | 'indices-not-managed-by-policy' | 'ok'; - -export interface IlmPolicyStatusResponse { - status: IlmPolicyMigrationStatus; -} - -export interface LocatorParams

{ - id: string; - - /** - * Kibana version used to create the params - */ - version: string; - - /** - * Data to recreate the user's state in the application - */ - params: P; -} diff --git a/packages/kbn-reporting/export_types_helpers_public/kibana.jsonc b/packages/kbn-reporting/export_types_helpers_public/kibana.jsonc deleted file mode 100644 index 1d9fb85c5f8f74..00000000000000 --- a/packages/kbn-reporting/export_types_helpers_public/kibana.jsonc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "type": "shared-common", - "id": "@kbn/reporting-export-types-helpers-public", - "owner": "@elastic/appex-sharedux", - } - \ No newline at end of file diff --git a/packages/kbn-reporting/export_types_helpers_public/package.json b/packages/kbn-reporting/export_types_helpers_public/package.json deleted file mode 100644 index b3624e28c6d4dc..00000000000000 --- a/packages/kbn-reporting/export_types_helpers_public/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@kbn/reporting-export-types-helpers-public", - "private": true, - "version": "1.0.0", - "license": "SSPL-1.0 OR Elastic License 2.0" - } \ No newline at end of file diff --git a/packages/kbn-reporting/export_types_helpers_server/package.json b/packages/kbn-reporting/export_types_helpers_server/package.json deleted file mode 100644 index 0ed34f80d28e7d..00000000000000 --- a/packages/kbn-reporting/export_types_helpers_server/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@kbn/reporting-export-types-helpers-server", - "private": true, - "version": "1.0.0", - "license": "SSPL-1.0 OR Elastic License 2.0" - } \ No newline at end of file diff --git a/packages/kbn-reporting/export_types_helpers_server/types.ts b/packages/kbn-reporting/export_types_helpers_server/types.ts deleted file mode 100644 index 6df8228d68dba9..00000000000000 --- a/packages/kbn-reporting/export_types_helpers_server/types.ts +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { Writable } from 'stream'; - -import type { CustomRequestHandlerContext } from '@kbn/core-http-request-handler-context-server'; -import type { KibanaRequest } from '@kbn/core-http-server'; -import type { SerializedSearchSourceFields } from '@kbn/data-plugin/public'; -import type { CancellationToken } from '@kbn/reporting-common'; -import type { - BaseParams, - BaseParamsV2, - BasePayload, - BasePayloadV2, - LocatorParams, - TaskRunResult, -} from '@kbn/reporting-common/types'; -import { LayoutParams } from '@kbn/screenshotting-plugin/common'; - -/** - * @internal - */ -export interface CommonReportingSetup { - registerExportTypes: () => void; - /** - * Used to inform plugins if Reporting config is compatible with UI Capabilities / Application Sub-Feature Controls - */ - usesUiCapabilities: () => boolean; -} - -export type ReportingRequestHandlerContext = CustomRequestHandlerContext<{ - reporting: CommonReportingSetup | null; -}>; - -/** - * Internal Types - */ -// standard type for create job function of any ExportType implementation -export type CreateJobFn = ( - jobParams: JobParamsType, - context: ReportingRequestHandlerContext, - req: KibanaRequest -) => Promise>; - -// standard type for run task function of any ExportType implementation -export type RunTaskFn = ( - jobId: string, - payload: TaskPayloadType, - cancellationToken: CancellationToken, - stream: Writable -) => Promise; - -export interface JobParamsDownloadCSV { - browserTimezone: string; - title: string; - searchSource: SerializedSearchSourceFields; - columns?: string[]; -} - -/** - * Structure of stored job data provided by create_job - */ -export interface TaskPayloadPDF extends BasePayload { - layout: LayoutParams; - forceNow?: string; - objects: Array<{ relativeUrl: string }>; -} - -interface BaseParamsPNG { - layout: LayoutParams; - forceNow?: string; - relativeUrl: string; -} - -// Job params: structure of incoming user request data -/** - * @deprecated - */ -export type JobParamsPNGDeprecated = BaseParamsPNG & BaseParams; - -// Job payload: structure of stored job data provided by create_job -export type TaskPayloadPNG = BaseParamsPNG & BasePayload; - -interface BaseParamsPDFV2 { - layout: LayoutParams; - - /** - * This value is used to re-create the same visual state as when the report was requested as well as navigate to the correct page. - */ - locatorParams: LocatorParams[]; -} - -// Job params: structure of incoming user request data, after being parsed from RISON -export type JobParamsPDFV2 = BaseParamsPDFV2 & BaseParams; - -export type JobAppParamsPDFV2 = Omit; - -// Job payload: structure of stored job data provided by create_job -export interface TaskPayloadPDFV2 extends BasePayload, BaseParamsPDFV2 { - layout: LayoutParams; - /** - * The value of forceNow is injected server-side every time a given report is generated. - */ - forceNow: string; -} -interface BaseParamsCSV { - searchSource: SerializedSearchSourceFields; - columns?: string[]; -} - -export type JobParamsCSV = BaseParamsCSV & BaseParams; -export type TaskPayloadCSV = BaseParamsCSV & BasePayload; - -interface CsvFromSavedObjectBase { - objectType: 'search'; -} - -/** - * Makes title optional, as it can be derived from the saved search object - */ -export type JobParamsCsvFromSavedObject = CsvFromSavedObjectBase & - Omit & { title?: string }; - -/** - * - */ -export type TaskPayloadCsvFromSavedObject = CsvFromSavedObjectBase & BasePayloadV2; - -export interface JobParamsPNGV2 extends BaseParams { - layout: LayoutParams; - /** - * This value is used to re-create the same visual state as when the report was requested as well as navigate to the correct page. - */ - locatorParams: LocatorParams; -} - -// Job payload: structure of stored job data provided by create_job -export interface TaskPayloadPNGV2 extends BasePayload { - layout: LayoutParams; - forceNow: string; - /** - * Even though we only ever handle one locator for a PNG, we store it as an array for consistency with how PDFs are stored - */ - locatorParams: LocatorParams[]; -} diff --git a/packages/kbn-reporting/mocks_server/README.md b/packages/kbn-reporting/mocks_server/README.md new file mode 100644 index 00000000000000..b77e23746b551c --- /dev/null +++ b/packages/kbn-reporting/mocks_server/README.md @@ -0,0 +1,3 @@ +# @kbn/reporting-mocks-server + +Empty package generated by @kbn/generate diff --git a/packages/kbn-reporting/mocks_server/index.ts b/packages/kbn-reporting/mocks_server/index.ts new file mode 100644 index 00000000000000..e6395c9bbe9eb7 --- /dev/null +++ b/packages/kbn-reporting/mocks_server/index.ts @@ -0,0 +1,48 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { DeepPartial } from 'utility-types'; +import { ReportingConfigType } from '@kbn/reporting-config-server'; + +export const createMockConfigSchema = ( + overrides: DeepPartial = {} +): ReportingConfigType => { + // deeply merge the defaults and the provided partial schema + return { + index: '.reporting', + encryptionKey: 'cool-encryption-key-where-did-you-find-it', + ...overrides, + kibanaServer: { + hostname: 'localhost', + ...overrides.kibanaServer, + }, + queue: { + indexInterval: 'week', + pollEnabled: true, + pollInterval: 3000, + timeout: 120000, + ...overrides.queue, + }, + csv: { + scroll: { size: 500, duration: '30s' }, + ...overrides.csv, + }, + roles: { + enabled: false, + ...overrides.roles, + }, + capture: { maxAttempts: 1 }, + export_types: { + pdf: { enabled: true }, + png: { enabled: true }, + csv: { enabled: true }, + ...overrides.export_types, + }, + statefulSettings: { enabled: true }, + } as ReportingConfigType; +}; diff --git a/packages/kbn-reporting/export_types/deprecated/index.ts b/packages/kbn-reporting/mocks_server/jest.config.js similarity index 72% rename from packages/kbn-reporting/export_types/deprecated/index.ts rename to packages/kbn-reporting/mocks_server/jest.config.js index 3d662d6602d9d5..ce39471ef378ad 100644 --- a/packages/kbn-reporting/export_types/deprecated/index.ts +++ b/packages/kbn-reporting/mocks_server/jest.config.js @@ -6,5 +6,8 @@ * Side Public License, v 1. */ -export { PdfV1ExportType } from './printable_pdf'; -export type { JobParamsPDFDeprecated } from './printable_pdf'; +module.exports = { + preset: '@kbn/test/jest_node', + rootDir: '../../..', + roots: ['/packages/kbn-reporting/mocks_server'], +}; diff --git a/packages/kbn-generate-csv-types/kibana.jsonc b/packages/kbn-reporting/mocks_server/kibana.jsonc similarity index 63% rename from packages/kbn-generate-csv-types/kibana.jsonc rename to packages/kbn-reporting/mocks_server/kibana.jsonc index 349c85eff25584..e9c9707b67a2a4 100644 --- a/packages/kbn-generate-csv-types/kibana.jsonc +++ b/packages/kbn-reporting/mocks_server/kibana.jsonc @@ -1,5 +1,5 @@ { "type": "shared-common", - "id": "@kbn/generate-csv-types", + "id": "@kbn/reporting-mocks-server", "owner": "@elastic/appex-sharedux" } diff --git a/packages/kbn-generate-csv-types/package.json b/packages/kbn-reporting/mocks_server/package.json similarity index 68% rename from packages/kbn-generate-csv-types/package.json rename to packages/kbn-reporting/mocks_server/package.json index 7c34b87f1524a4..88b3ac47155693 100644 --- a/packages/kbn-generate-csv-types/package.json +++ b/packages/kbn-reporting/mocks_server/package.json @@ -1,5 +1,5 @@ { - "name": "@kbn/generate-csv-types", + "name": "@kbn/reporting-mocks-server", "private": true, "version": "1.0.0", "license": "SSPL-1.0 OR Elastic License 2.0" diff --git a/packages/kbn-reporting/mocks_server/tsconfig.json b/packages/kbn-reporting/mocks_server/tsconfig.json new file mode 100644 index 00000000000000..1027c66fc58374 --- /dev/null +++ b/packages/kbn-reporting/mocks_server/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "**/*.ts", + ], + "exclude": [ + "target/**/*" + ], + "kbn_references": [ + "@kbn/reporting-config-server", + ] +} diff --git a/packages/kbn-reporting/export_types_helpers_server/crypto.ts b/packages/kbn-reporting/server/crypto.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/crypto.ts rename to packages/kbn-reporting/server/crypto.ts diff --git a/packages/kbn-reporting/export_types_helpers_server/decrypt_job_headers.test.ts b/packages/kbn-reporting/server/decrypt_job_headers.test.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/decrypt_job_headers.test.ts rename to packages/kbn-reporting/server/decrypt_job_headers.test.ts diff --git a/packages/kbn-reporting/export_types_helpers_server/decrypt_job_headers.ts b/packages/kbn-reporting/server/decrypt_job_headers.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/decrypt_job_headers.ts rename to packages/kbn-reporting/server/decrypt_job_headers.ts diff --git a/packages/kbn-reporting/export_types_helpers_server/export_type.ts b/packages/kbn-reporting/server/export_type.ts similarity index 97% rename from packages/kbn-reporting/export_types_helpers_server/export_type.ts rename to packages/kbn-reporting/server/export_type.ts index 7de7af835b4846..6adfa041c18fa6 100644 --- a/packages/kbn-reporting/export_types_helpers_server/export_type.ts +++ b/packages/kbn-reporting/server/export_type.ts @@ -22,7 +22,8 @@ import type { SavedObjectsServiceStart } from '@kbn/core-saved-objects-server'; import type { UiSettingsServiceStart } from '@kbn/core-ui-settings-server'; import type { LicenseType } from '@kbn/licensing-plugin/common/types'; import type { Logger } from '@kbn/logging'; -import { ReportingConfigType, ReportingServerInfo } from '@kbn/reporting-common/types'; +import { ReportingServerInfo } from '@kbn/reporting-common/types'; +import { ReportingConfigType } from '@kbn/reporting-config-server'; import type { ScreenshottingStart } from '@kbn/screenshotting-plugin/server'; import { DEFAULT_SPACE_ID } from '@kbn/spaces-plugin/common'; import type { SpacesPluginSetup } from '@kbn/spaces-plugin/server'; diff --git a/packages/kbn-reporting/export_types_helpers_server/generate_pdf.ts b/packages/kbn-reporting/server/generate_pdf.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/generate_pdf.ts rename to packages/kbn-reporting/server/generate_pdf.ts diff --git a/packages/kbn-reporting/export_types_helpers_server/generate_pdf_v2.ts b/packages/kbn-reporting/server/generate_pdf_v2.ts similarity index 88% rename from packages/kbn-reporting/export_types_helpers_server/generate_pdf_v2.ts rename to packages/kbn-reporting/server/generate_pdf_v2.ts index da7e64d825ab8c..af6b7b208723e1 100644 --- a/packages/kbn-reporting/export_types_helpers_server/generate_pdf_v2.ts +++ b/packages/kbn-reporting/server/generate_pdf_v2.ts @@ -9,17 +9,14 @@ import { Observable } from 'rxjs'; import { mergeMap, tap } from 'rxjs/operators'; -import { getFullRedirectAppUrl } from '@kbn/reporting-common'; -import type { - LocatorParams, - ReportingConfigType, - ReportingServerInfo, -} from '@kbn/reporting-common/types'; +import type { LocatorParams, ReportingServerInfo } from '@kbn/reporting-common/types'; +import { ReportingConfigType } from '@kbn/reporting-config-server'; +import { TaskPayloadPDFV2 } from '@kbn/reporting-export-types-pdf-common'; import type { PdfScreenshotOptions, PdfScreenshotResult } from '@kbn/screenshotting-plugin/server'; import type { UrlOrUrlWithContext } from '@kbn/screenshotting-plugin/server/screenshots'; +import { getFullRedirectAppUrl } from '.'; import { getTracker } from './pdf_tracker'; -import { TaskPayloadPDFV2 } from './types'; interface PdfResult { buffer: Uint8Array | null; diff --git a/packages/kbn-reporting/export_types_helpers_server/generate_png.ts b/packages/kbn-reporting/server/generate_png.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/generate_png.ts rename to packages/kbn-reporting/server/generate_png.ts diff --git a/packages/kbn-reporting/export_types_helpers_server/get_absolute_url.test.ts b/packages/kbn-reporting/server/get_absolute_url.test.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/get_absolute_url.test.ts rename to packages/kbn-reporting/server/get_absolute_url.test.ts diff --git a/packages/kbn-reporting/export_types_helpers_server/get_absolute_url.ts b/packages/kbn-reporting/server/get_absolute_url.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/get_absolute_url.ts rename to packages/kbn-reporting/server/get_absolute_url.ts diff --git a/packages/kbn-reporting/export_types_helpers_server/get_custom_logo.test.ts b/packages/kbn-reporting/server/get_custom_logo.test.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/get_custom_logo.test.ts rename to packages/kbn-reporting/server/get_custom_logo.test.ts diff --git a/packages/kbn-reporting/export_types_helpers_server/get_custom_logo.ts b/packages/kbn-reporting/server/get_custom_logo.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/get_custom_logo.ts rename to packages/kbn-reporting/server/get_custom_logo.ts diff --git a/packages/kbn-reporting/common/get_full_redirect_app_url.test.ts b/packages/kbn-reporting/server/get_full_redirect_app_url.test.ts similarity index 94% rename from packages/kbn-reporting/common/get_full_redirect_app_url.test.ts rename to packages/kbn-reporting/server/get_full_redirect_app_url.test.ts index 970286320056ff..c10ed022a0b5ed 100644 --- a/packages/kbn-reporting/common/get_full_redirect_app_url.test.ts +++ b/packages/kbn-reporting/server/get_full_redirect_app_url.test.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ +import { ReportingConfigType } from '@kbn/reporting-config-server'; import { getFullRedirectAppUrl } from './get_full_redirect_app_url'; -import { ReportingConfigType } from './types'; describe('getFullRedirectAppUrl', () => { const mockConfig = { kibanaServer: {} } as unknown as ReportingConfigType; diff --git a/packages/kbn-reporting/common/get_full_redirect_app_url.ts b/packages/kbn-reporting/server/get_full_redirect_app_url.ts similarity index 81% rename from packages/kbn-reporting/common/get_full_redirect_app_url.ts rename to packages/kbn-reporting/server/get_full_redirect_app_url.ts index cbbf6436d63002..b80241b82258d6 100644 --- a/packages/kbn-reporting/common/get_full_redirect_app_url.ts +++ b/packages/kbn-reporting/server/get_full_redirect_app_url.ts @@ -7,9 +7,10 @@ */ import { format } from 'url'; -import { buildKibanaPath } from './build_kibana_path'; -import { getRedirectAppPath } from './constants'; -import { ReportingConfigType, ReportingServerInfo } from './types'; + +import { buildKibanaPath, getRedirectAppPath } from '@kbn/reporting-common'; +import { ReportingServerInfo } from '@kbn/reporting-common/types'; +import { ReportingConfigType } from '@kbn/reporting-config-server'; export function getFullRedirectAppUrl( config: ReportingConfigType, diff --git a/packages/kbn-reporting/export_types_helpers_server/get_full_urls.test.ts b/packages/kbn-reporting/server/get_full_urls.test.ts similarity index 96% rename from packages/kbn-reporting/export_types_helpers_server/get_full_urls.test.ts rename to packages/kbn-reporting/server/get_full_urls.test.ts index 6b86fa3006a44a..fd644233a52dd4 100644 --- a/packages/kbn-reporting/export_types_helpers_server/get_full_urls.test.ts +++ b/packages/kbn-reporting/server/get_full_urls.test.ts @@ -6,9 +6,10 @@ * Side Public License, v 1. */ -import { ReportingConfigType, ReportingServerInfo } from '@kbn/reporting-common/types'; +import { ReportingServerInfo } from '@kbn/reporting-common/types'; +import { ReportingConfigType } from '@kbn/reporting-config-server'; +import { TaskPayloadPDF } from '@kbn/reporting-export-types-pdf-common'; -import { TaskPayloadPDF } from './types'; import { getFullUrls } from './get_full_urls'; const getMockJob = (base: object) => base as TaskPayloadPDF; diff --git a/packages/kbn-reporting/export_types_helpers_server/get_full_urls.ts b/packages/kbn-reporting/server/get_full_urls.ts similarity index 92% rename from packages/kbn-reporting/export_types_helpers_server/get_full_urls.ts rename to packages/kbn-reporting/server/get_full_urls.ts index d554349b018468..215b61feaa072d 100644 --- a/packages/kbn-reporting/export_types_helpers_server/get_full_urls.ts +++ b/packages/kbn-reporting/server/get_full_urls.ts @@ -13,10 +13,11 @@ import { UrlWithStringQuery, } from 'url'; -import { ReportingConfigType, ReportingServerInfo } from '@kbn/reporting-common/types'; +import { ReportingServerInfo } from '@kbn/reporting-common/types'; +import { ReportingConfigType } from '@kbn/reporting-config-server'; +import { TaskPayloadPDF } from '@kbn/reporting-export-types-pdf-common'; import { getAbsoluteUrlFactory } from './get_absolute_url'; -import { TaskPayloadPDF } from './types'; import { validateUrls } from './validate_urls'; export function getFullUrls( @@ -46,7 +47,7 @@ export function getFullUrls( validateUrls(relativeUrls); const urls = relativeUrls.map((relativeUrl) => { - const parsedRelative: UrlWithStringQuery = urlParse(relativeUrl); // FIXME: '(urlStr: string): UrlWithStringQuery' is deprecated + const parsedRelative: UrlWithStringQuery = urlParse(relativeUrl); const jobUrl = getAbsoluteUrl({ path: parsedRelative.pathname === null ? undefined : parsedRelative.pathname, hash: parsedRelative.hash === null ? undefined : parsedRelative.hash, diff --git a/packages/kbn-reporting/export_types_helpers_server/index.ts b/packages/kbn-reporting/server/index.ts similarity index 93% rename from packages/kbn-reporting/export_types_helpers_server/index.ts rename to packages/kbn-reporting/server/index.ts index 5c53876de8c81c..e34730b96e8b2f 100644 --- a/packages/kbn-reporting/export_types_helpers_server/index.ts +++ b/packages/kbn-reporting/server/index.ts @@ -6,18 +6,18 @@ * Side Public License, v 1. */ -export { getFieldFormats, setFieldFormats } from './services'; -export { decryptJobHeaders } from './decrypt_job_headers'; -export { getCustomLogo } from './get_custom_logo'; -export { generatePdfObservable } from './generate_pdf'; -export { validateUrls } from './validate_urls'; -export { getFullUrls } from './get_full_urls'; -export { getAbsoluteUrlFactory } from './get_absolute_url'; -export { generatePngObservable } from './generate_png'; -export { generatePdfObservableV2 } from './generate_pdf_v2'; -export { buildKibanaPath } from '@kbn/reporting-common/build_kibana_path'; export { cryptoFactory } from './crypto'; +export { decryptJobHeaders } from './decrypt_job_headers'; export { ExportType } from './export_type'; export type { BaseExportTypeSetupDeps, BaseExportTypeStartDeps } from './export_type'; +export { generatePdfObservable } from './generate_pdf'; +export { generatePdfObservableV2 } from './generate_pdf_v2'; +export { generatePngObservable } from './generate_png'; +export { getAbsoluteUrlFactory } from './get_absolute_url'; +export { getCustomLogo } from './get_custom_logo'; +export { getFullRedirectAppUrl } from './get_full_redirect_app_url'; +export { getFullUrls } from './get_full_urls'; export { getTracker } from './pdf_tracker'; +export { getFieldFormats, setFieldFormats } from './services'; export * from './types'; +export { validateUrls } from './validate_urls'; diff --git a/packages/kbn-reporting/export_types_helpers_server/jest.config.js b/packages/kbn-reporting/server/jest.config.js similarity index 84% rename from packages/kbn-reporting/export_types_helpers_server/jest.config.js rename to packages/kbn-reporting/server/jest.config.js index 6ac91065200f99..9b805e9133994a 100644 --- a/packages/kbn-reporting/export_types_helpers_server/jest.config.js +++ b/packages/kbn-reporting/server/jest.config.js @@ -9,5 +9,5 @@ module.exports = { preset: '@kbn/test', rootDir: '../../..', - roots: ['/packages/kbn-reporting/export_types_helpers_server'], + roots: ['/packages/kbn-reporting/server'], }; diff --git a/packages/kbn-reporting/export_types_helpers_server/kibana.jsonc b/packages/kbn-reporting/server/kibana.jsonc similarity index 71% rename from packages/kbn-reporting/export_types_helpers_server/kibana.jsonc rename to packages/kbn-reporting/server/kibana.jsonc index ce40a84cef5142..a2440596bd9dd2 100644 --- a/packages/kbn-reporting/export_types_helpers_server/kibana.jsonc +++ b/packages/kbn-reporting/server/kibana.jsonc @@ -1,10 +1,10 @@ { "type": "shared-server", - "id": "@kbn/reporting-export-types-helpers-server", + "id": "@kbn/reporting-server", "owner": "@elastic/appex-sharedux", "plugin": { "server": true, "browser": false, } } - \ No newline at end of file + diff --git a/packages/kbn-reporting/export_types/deprecated/package.json b/packages/kbn-reporting/server/package.json similarity index 64% rename from packages/kbn-reporting/export_types/deprecated/package.json rename to packages/kbn-reporting/server/package.json index 261d00b81a54dd..0db86c14c13909 100644 --- a/packages/kbn-reporting/export_types/deprecated/package.json +++ b/packages/kbn-reporting/server/package.json @@ -1,5 +1,5 @@ { - "name": "@kbn/reporting-export-types-deprecated", + "name": "@kbn/reporting-server", "private": true, "version": "1.0.0", "license": "SSPL-1.0 OR Elastic License 2.0" diff --git a/packages/kbn-reporting/export_types_helpers_server/pdf_tracker.ts b/packages/kbn-reporting/server/pdf_tracker.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/pdf_tracker.ts rename to packages/kbn-reporting/server/pdf_tracker.ts diff --git a/packages/kbn-reporting/export_types_helpers_server/services.ts b/packages/kbn-reporting/server/services.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/services.ts rename to packages/kbn-reporting/server/services.ts diff --git a/packages/kbn-reporting/export_types_helpers_server/tsconfig.json b/packages/kbn-reporting/server/tsconfig.json similarity index 91% rename from packages/kbn-reporting/export_types_helpers_server/tsconfig.json rename to packages/kbn-reporting/server/tsconfig.json index b594d5c979755c..7bc92e31bddb55 100644 --- a/packages/kbn-reporting/export_types_helpers_server/tsconfig.json +++ b/packages/kbn-reporting/server/tsconfig.json @@ -28,11 +28,12 @@ "@kbn/core-saved-objects-api-server", "@kbn/core-saved-objects-server", "@kbn/core-ui-settings-server", - "@kbn/data-plugin", "@kbn/licensing-plugin", "@kbn/spaces-plugin", "@kbn/core-elasticsearch-server", "@kbn/core-http-router-server-internal", "@kbn/core-http-request-handler-context-server", + "@kbn/reporting-export-types-pdf-common", + "@kbn/reporting-config-server", ] } diff --git a/packages/kbn-reporting/server/types.ts b/packages/kbn-reporting/server/types.ts new file mode 100644 index 00000000000000..8fac04cbc5f6c9 --- /dev/null +++ b/packages/kbn-reporting/server/types.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Writable } from 'stream'; + +import type { CustomRequestHandlerContext } from '@kbn/core-http-request-handler-context-server'; +import type { KibanaRequest } from '@kbn/core-http-server'; +import type { CancellationToken } from '@kbn/reporting-common'; +import type { BaseParams, BasePayload, TaskRunResult } from '@kbn/reporting-common/types'; +import { ExportType } from './export_type'; + +export interface ReportingServerPluginSetup { + registerExportTypes: (item: ExportType) => void; + /** + * Used to inform plugins if Reporting config is compatible with UI Capabilities / Application Sub-Feature Controls + */ + usesUiCapabilities: () => boolean; +} + +// standard type for create job function of any ExportType implementation +export type CreateJobFn = ( + jobParams: JobParamsType, + context: CustomRequestHandlerContext<{ + reporting: ReportingServerPluginSetup | null; + }>, + req: KibanaRequest +) => Promise>; + +// standard type for run task function of any ExportType implementation +export type RunTaskFn = ( + jobId: string, + payload: TaskPayloadType, + cancellationToken: CancellationToken, + stream: Writable +) => Promise; diff --git a/packages/kbn-reporting/export_types_helpers_server/validate_urls.test.ts b/packages/kbn-reporting/server/validate_urls.test.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/validate_urls.test.ts rename to packages/kbn-reporting/server/validate_urls.test.ts diff --git a/packages/kbn-reporting/export_types_helpers_server/validate_urls.ts b/packages/kbn-reporting/server/validate_urls.ts similarity index 100% rename from packages/kbn-reporting/export_types_helpers_server/validate_urls.ts rename to packages/kbn-reporting/server/validate_urls.ts diff --git a/tsconfig.base.json b/tsconfig.base.json index 2fea3c2ed67833..bd6fe71695f92c 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -828,8 +828,6 @@ "@kbn/generate-console-definitions/*": ["packages/kbn-generate-console-definitions/*"], "@kbn/generate-csv": ["packages/kbn-generate-csv"], "@kbn/generate-csv/*": ["packages/kbn-generate-csv/*"], - "@kbn/generate-csv-types": ["packages/kbn-generate-csv-types"], - "@kbn/generate-csv-types/*": ["packages/kbn-generate-csv-types/*"], "@kbn/get-repo-files": ["packages/kbn-get-repo-files"], "@kbn/get-repo-files/*": ["packages/kbn-get-repo-files/*"], "@kbn/global-search-bar-plugin": ["x-pack/plugins/global_search_bar"], @@ -1172,22 +1170,28 @@ "@kbn/repo-source-classifier-cli/*": ["packages/kbn-repo-source-classifier-cli/*"], "@kbn/reporting-common": ["packages/kbn-reporting/common"], "@kbn/reporting-common/*": ["packages/kbn-reporting/common/*"], + "@kbn/reporting-config-server": ["packages/kbn-reporting/config_server"], + "@kbn/reporting-config-server/*": ["packages/kbn-reporting/config_server/*"], "@kbn/reporting-example-plugin": ["x-pack/examples/reporting_example"], "@kbn/reporting-example-plugin/*": ["x-pack/examples/reporting_example/*"], "@kbn/reporting-export-types-csv": ["packages/kbn-reporting/export_types/csv"], "@kbn/reporting-export-types-csv/*": ["packages/kbn-reporting/export_types/csv/*"], - "@kbn/reporting-export-types-deprecated": ["packages/kbn-reporting/export_types/deprecated"], - "@kbn/reporting-export-types-deprecated/*": ["packages/kbn-reporting/export_types/deprecated/*"], - "@kbn/reporting-export-types-helpers-public": ["packages/kbn-reporting/export_types_helpers_public"], - "@kbn/reporting-export-types-helpers-public/*": ["packages/kbn-reporting/export_types_helpers_public/*"], - "@kbn/reporting-export-types-helpers-server": ["packages/kbn-reporting/export_types_helpers_server"], - "@kbn/reporting-export-types-helpers-server/*": ["packages/kbn-reporting/export_types_helpers_server/*"], - "@kbn/reporting-export-types-pdf": ["packages/kbn-reporting/export_types/printable_pdf_v2"], - "@kbn/reporting-export-types-pdf/*": ["packages/kbn-reporting/export_types/printable_pdf_v2/*"], + "@kbn/reporting-export-types-csv-common": ["packages/kbn-reporting/export_types/csv_common"], + "@kbn/reporting-export-types-csv-common/*": ["packages/kbn-reporting/export_types/csv_common/*"], + "@kbn/reporting-export-types-pdf": ["packages/kbn-reporting/export_types/pdf"], + "@kbn/reporting-export-types-pdf/*": ["packages/kbn-reporting/export_types/pdf/*"], + "@kbn/reporting-export-types-pdf-common": ["packages/kbn-reporting/export_types/pdf_common"], + "@kbn/reporting-export-types-pdf-common/*": ["packages/kbn-reporting/export_types/pdf_common/*"], "@kbn/reporting-export-types-png": ["packages/kbn-reporting/export_types/png"], "@kbn/reporting-export-types-png/*": ["packages/kbn-reporting/export_types/png/*"], + "@kbn/reporting-export-types-png-common": ["packages/kbn-reporting/export_types/png_common"], + "@kbn/reporting-export-types-png-common/*": ["packages/kbn-reporting/export_types/png_common/*"], + "@kbn/reporting-mocks-server": ["packages/kbn-reporting/mocks_server"], + "@kbn/reporting-mocks-server/*": ["packages/kbn-reporting/mocks_server/*"], "@kbn/reporting-plugin": ["x-pack/plugins/reporting"], "@kbn/reporting-plugin/*": ["x-pack/plugins/reporting/*"], + "@kbn/reporting-server": ["packages/kbn-reporting/server"], + "@kbn/reporting-server/*": ["packages/kbn-reporting/server/*"], "@kbn/resizable-layout": ["packages/kbn-resizable-layout"], "@kbn/resizable-layout/*": ["packages/kbn-resizable-layout/*"], "@kbn/resizable-layout-examples-plugin": ["examples/resizable_layout_examples"], diff --git a/x-pack/examples/reporting_example/public/containers/main.tsx b/x-pack/examples/reporting_example/public/containers/main.tsx index 634b10fae04fef..07d727172b58ba 100644 --- a/x-pack/examples/reporting_example/public/containers/main.tsx +++ b/x-pack/examples/reporting_example/public/containers/main.tsx @@ -5,6 +5,12 @@ * 2.0. */ +import { parsePath } from 'history'; +import moment from 'moment'; +import React, { useEffect, useState } from 'react'; +import * as Rx from 'rxjs'; +import { takeWhile } from 'rxjs/operators'; + import { EuiButton, EuiCard, @@ -18,23 +24,20 @@ import { EuiLink, EuiPage, EuiPageBody, - EuiPageSection, EuiPageHeader, + EuiPageSection, EuiPopover, EuiSpacer, EuiText, EuiTitle, } from '@elastic/eui'; import { I18nProvider } from '@kbn/i18n-react'; -import { parsePath } from 'history'; -import moment from 'moment'; -import React, { useEffect, useState } from 'react'; -import { BrowserRouter as Router, useHistory } from 'react-router-dom'; -import * as Rx from 'rxjs'; -import { takeWhile } from 'rxjs/operators'; -import type { ScreenshotModePluginSetup } from '@kbn/screenshot-mode-plugin/public'; +import { JobParamsPDFDeprecated, JobParamsPDFV2 } from '@kbn/reporting-export-types-pdf-common'; +import { JobParamsPNGV2 } from '@kbn/reporting-export-types-png-common'; import type { ReportingStart } from '@kbn/reporting-plugin/public'; -import type { LocatorParams } from '@kbn/reporting-common/url'; +import type { ScreenshotModePluginSetup } from '@kbn/screenshot-mode-plugin/public'; +import { BrowserRouter as Router, useHistory } from 'react-router-dom'; + import { REPORTING_EXAMPLE_LOCATOR_ID } from '../../common'; import { useApplicationContext } from '../application_context'; import { ROUTES } from '../constants'; @@ -101,17 +104,15 @@ export const Main = ({ basename, reporting, screenshotMode }: ReportingExampleAp }; }; - const getPNGJobParamsDefaultV2 = (): JobParamsPDFV2 => { + const getPNGJobParamsDefaultV2 = (): JobParamsPNGV2 => { return { version: '8.0.0', layout: { id: 'preserve_layout' }, - locatorParams: [ - { - id: REPORTING_EXAMPLE_LOCATOR_ID, - version: '0.5.0', - params: { myTestState: {} }, - }, - ] as unknown as LocatorParams[], + locatorParams: { + id: REPORTING_EXAMPLE_LOCATOR_ID, + version: '0.5.0', + params: { myTestState: {} }, + }, objectType: 'develeloperExample', title: 'Reporting Developer Example', browserTimezone: moment.tz.guess(), diff --git a/x-pack/examples/reporting_example/tsconfig.json b/x-pack/examples/reporting_example/tsconfig.json index 26e0cd7d9e3ddd..cb91f89dea0138 100644 --- a/x-pack/examples/reporting_example/tsconfig.json +++ b/x-pack/examples/reporting_example/tsconfig.json @@ -25,6 +25,7 @@ "@kbn/i18n-react", "@kbn/utility-types", "@kbn/shared-ux-router", - "@kbn/reporting-common", + "@kbn/reporting-export-types-pdf-common", + "@kbn/reporting-export-types-png-common", ] } diff --git a/x-pack/plugins/canvas/public/components/workpad_header/share_menu/utils.ts b/x-pack/plugins/canvas/public/components/workpad_header/share_menu/utils.ts index ecd63fbb437ac7..d535d7dceaf0b9 100644 --- a/x-pack/plugins/canvas/public/components/workpad_header/share_menu/utils.ts +++ b/x-pack/plugins/canvas/public/components/workpad_header/share_menu/utils.ts @@ -6,6 +6,7 @@ */ import type { RedirectOptions } from '@kbn/share-plugin/public'; +import { JobAppParamsPDFV2 } from '@kbn/reporting-export-types-pdf-common'; import { CanvasAppLocatorParams, CANVAS_APP_LOCATOR } from '../../../../common/locator'; import { CanvasWorkpad } from '../../../../types'; diff --git a/x-pack/plugins/canvas/server/plugin.ts b/x-pack/plugins/canvas/server/plugin.ts index 310271b7a1e514..9dd6dc1bdd64fd 100644 --- a/x-pack/plugins/canvas/server/plugin.ts +++ b/x-pack/plugins/canvas/server/plugin.ts @@ -16,7 +16,7 @@ import { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; import { HomeServerPluginSetup } from '@kbn/home-plugin/server'; import { EmbeddableSetup } from '@kbn/embeddable-plugin/server'; import { PluginSetupContract as FeaturesPluginSetup } from '@kbn/features-plugin/server'; -import type { CommonReportingSetup } from '@kbn/reporting-export-types-helpers-server'; +import { ReportingServerPluginSetup } from '@kbn/reporting-server'; import { getCanvasFeature } from './feature'; import { initRoutes } from './routes'; import { registerCanvasUsageCollector } from './collectors'; @@ -35,7 +35,7 @@ interface PluginsSetup { home: HomeServerPluginSetup; bfetch: BfetchServerSetup; data: DataPluginSetup; - reporting?: CommonReportingSetup; + reporting?: ReportingServerPluginSetup; usageCollection?: UsageCollectionSetup; } diff --git a/x-pack/plugins/canvas/tsconfig.json b/x-pack/plugins/canvas/tsconfig.json index c3eecb85df728f..b3a9ef19723e39 100644 --- a/x-pack/plugins/canvas/tsconfig.json +++ b/x-pack/plugins/canvas/tsconfig.json @@ -84,7 +84,8 @@ "@kbn/content-management-plugin", "@kbn/react-kibana-context-theme", "@kbn/shared-ux-page-kibana-template", - "@kbn/reporting-export-types-helpers-server", + "@kbn/reporting-server", + "@kbn/reporting-export-types-pdf-common", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/reporting/README.md b/x-pack/plugins/reporting/README.md index 9b54ef68920148..c0c28c5c6fcd53 100644 --- a/x-pack/plugins/reporting/README.md +++ b/x-pack/plugins/reporting/README.md @@ -10,7 +10,7 @@ This should be deprecated. It is historically a customer driven endpoint. This This new endpoint is designed to have a more automation-friendly signature. It will replace csv_searchsource in the UI at some point, when there is more capacity in reporting. It will need a little more work to have parity: it needs to be able to export "unsaved" searches. ## Generate CSV -Although historically related to reporting, the CsvGenerator class has now be moved into its own package `@kbn/generate-csv` and `@kbn/generate-csv-types`. +Although historically related to reporting, the CsvGenerator class has now be moved into its own package `@kbn/generate-csv`. ## Serverless configuration There are several improvements made for reporting in serverless environments. Most changes are reflected in `reporting/server/config/schema.ts` for reference. diff --git a/x-pack/plugins/reporting/common/constants/index.ts b/x-pack/plugins/reporting/common/constants/index.ts index f1363ab09a2f44..d3de630932a75d 100644 --- a/x-pack/plugins/reporting/common/constants/index.ts +++ b/x-pack/plugins/reporting/common/constants/index.ts @@ -6,10 +6,25 @@ */ import { CONTENT_TYPE_CSV } from '@kbn/generate-csv/src/constants'; -import { jobTypes } from '@kbn/reporting-common'; -import * as reportTypes from '@kbn/reporting-common/report_types'; - -const { PDF_JOB_TYPE, PDF_JOB_TYPE_V2, PNG_JOB_TYPE, PNG_JOB_TYPE_V2 } = jobTypes; +import { + CSV_JOB_TYPE, + CSV_JOB_TYPE_DEPRECATED, + CSV_JOB_TYPE_V2, + CSV_REPORT_TYPE, + CSV_REPORT_TYPE_V2, +} from '@kbn/reporting-export-types-csv-common'; +import { + PDF_JOB_TYPE, + PDF_JOB_TYPE_V2, + PDF_REPORT_TYPE, + PDF_REPORT_TYPE_V2, +} from '@kbn/reporting-export-types-pdf-common'; +import { + PNG_JOB_TYPE, + PNG_JOB_TYPE_V2, + PNG_REPORT_TYPE, + PNG_REPORT_TYPE_V2, +} from '@kbn/reporting-export-types-png-common'; export const PLUGIN_ID = 'reporting'; @@ -40,19 +55,30 @@ export const ALLOWED_JOB_CONTENT_TYPES = [ export type JobId = string; +export const reportTypes = [ + CSV_REPORT_TYPE, + CSV_REPORT_TYPE_V2, + PDF_REPORT_TYPE, + PDF_REPORT_TYPE_V2, + PNG_REPORT_TYPE, + PNG_REPORT_TYPE_V2, +]; + +export const jobTypes = [ + CSV_JOB_TYPE, + CSV_JOB_TYPE_V2, + PDF_JOB_TYPE, + PDF_JOB_TYPE_V2, + PNG_JOB_TYPE, + PNG_JOB_TYPE_V2, +]; + type ReportTypeDeclaration = typeof reportTypes; export type ReportTypes = ReportTypeDeclaration[keyof ReportTypeDeclaration]; type JobTypeDeclaration = typeof jobTypes; export type JobTypes = JobTypeDeclaration[keyof JobTypeDeclaration]; -export const CSV_SEARCHSOURCE_IMMEDIATE_TYPE = 'csv_searchsource_immediate'; - -// This is deprecated because it lacks support for runtime fields -// but the extension points are still needed for pre-existing scripted automation, until 8.0 -export const CSV_REPORT_TYPE_DEPRECATED = 'CSV'; -export const CSV_JOB_TYPE_DEPRECATED = 'csv'; - export const USES_HEADLESS_JOB_TYPES = [ PDF_JOB_TYPE, PNG_JOB_TYPE, diff --git a/x-pack/plugins/reporting/common/job_utils.ts b/x-pack/plugins/reporting/common/job_utils.ts index 1ff1872c274dd9..580f2d74671132 100644 --- a/x-pack/plugins/reporting/common/job_utils.ts +++ b/x-pack/plugins/reporting/common/job_utils.ts @@ -5,14 +5,9 @@ * 2.0. */ -import { - CSV_JOB_TYPE, - PDF_JOB_TYPE, - PDF_JOB_TYPE_V2, - PNG_JOB_TYPE, - PNG_JOB_TYPE_V2, -} from '@kbn/reporting-common'; -import { CSV_JOB_TYPE_DEPRECATED } from './constants'; +import { CSV_JOB_TYPE, CSV_JOB_TYPE_DEPRECATED } from '@kbn/reporting-export-types-csv-common'; +import { PDF_JOB_TYPE, PDF_JOB_TYPE_V2 } from '@kbn/reporting-export-types-pdf-common'; +import { PNG_JOB_TYPE, PNG_JOB_TYPE_V2 } from '@kbn/reporting-export-types-png-common'; // TODO: Remove this code once everyone is using the new PDF format, then we can also remove the legacy // export type entirely diff --git a/x-pack/plugins/reporting/public/lib/ilm_policy_status_context.tsx b/x-pack/plugins/reporting/public/lib/ilm_policy_status_context.tsx index 4c728684e2c97b..8c0013b14f95a6 100644 --- a/x-pack/plugins/reporting/public/lib/ilm_policy_status_context.tsx +++ b/x-pack/plugins/reporting/public/lib/ilm_policy_status_context.tsx @@ -7,7 +7,7 @@ import type { FunctionComponent } from 'react'; import React, { createContext, useContext } from 'react'; -import type { IlmPolicyStatusResponse } from '@kbn/reporting-export-types-helpers-public'; +import type { IlmPolicyStatusResponse } from '@kbn/reporting-common/types'; import { useCheckIlmPolicyStatus } from './reporting_api_client'; diff --git a/x-pack/plugins/reporting/public/lib/job.test.ts b/x-pack/plugins/reporting/public/lib/job.test.ts index 92e3561c772ae4..3f1e64d57daf80 100644 --- a/x-pack/plugins/reporting/public/lib/job.test.ts +++ b/x-pack/plugins/reporting/public/lib/job.test.ts @@ -5,8 +5,8 @@ * 2.0. */ +import { jobTypes } from '../../common/constants'; import { mockJobs } from '../../common/test'; -import { jobTypes } from '@kbn/reporting-common'; import { Job } from './job'; describe('Job', () => { diff --git a/x-pack/plugins/reporting/public/lib/job.tsx b/x-pack/plugins/reporting/public/lib/job.tsx index 5670054b862382..7b5b0b4347a2bb 100644 --- a/x-pack/plugins/reporting/public/lib/job.tsx +++ b/x-pack/plugins/reporting/public/lib/job.tsx @@ -10,7 +10,7 @@ import React from 'react'; import { EuiText, EuiTextColor } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { BaseParamsV2, ReportOutput } from '@kbn/reporting-common/types'; +import { BaseParamsV2, ReportOutput, TaskRunResult } from '@kbn/reporting-common/types'; import { JobId, JobTypes, JOB_STATUSES } from '../../common/constants'; import type { ReportApiJSON, ReportFields, ReportSource } from '../../common/types'; @@ -19,23 +19,6 @@ const { COMPLETED, FAILED, PENDING, PROCESSING, WARNINGS } = JOB_STATUSES; type ReportPayload = ReportSource['payload']; -interface TaskRunResult { - content_type: string | null; - csv_contains_formulas?: boolean; - max_size_reached?: boolean; - warnings?: string[]; - metrics?: unknown; - /** - * When running a report task we may finish with warnings that were triggered - * by an error. We can pass the error code via the task run result to the - * task runner so that it can be recorded for telemetry. - * - * Alternatively, this field can be populated in the event that the task does - * not complete in the task runner's error handler. - */ - error_code?: string; -} - /* * This class represents a report job for the UI * It can be instantiated with ReportApiJSON: the response data format for the report job APIs @@ -191,6 +174,7 @@ export class Job { return i18n.translate('xpack.reporting.jobType.pngOutputName', { defaultMessage: 'PNG', }); + case 'csv_v2': case 'csv_searchsource': return i18n.translate('xpack.reporting.jobType.csvOutputName', { defaultMessage: 'CSV', diff --git a/x-pack/plugins/reporting/public/lib/reporting_api_client/hooks.ts b/x-pack/plugins/reporting/public/lib/reporting_api_client/hooks.ts index 68cccb27a517a2..5ede6e11ee78ad 100644 --- a/x-pack/plugins/reporting/public/lib/reporting_api_client/hooks.ts +++ b/x-pack/plugins/reporting/public/lib/reporting_api_client/hooks.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { IlmPolicyStatusResponse } from '@kbn/reporting-export-types-helpers-public'; +import { IlmPolicyStatusResponse } from '@kbn/reporting-common/types'; import { INTERNAL_ROUTES } from '../../../common/constants'; import { useKibana, useRequest, UseRequestResponse } from '../../shared_imports'; diff --git a/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.test.ts b/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.test.ts index 135576557f419c..87483e98fe5dde 100644 --- a/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.test.ts +++ b/x-pack/plugins/reporting/public/lib/reporting_api_client/reporting_api_client.test.ts @@ -4,9 +4,11 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ + +import { tz } from 'moment-timezone'; + import { HttpSetup, IUiSettingsClient } from '@kbn/core/public'; import { httpServiceMock, uiSettingsServiceMock } from '@kbn/core/public/mocks'; -import { tz } from 'moment-timezone'; import { Job } from '../job'; import { ReportingAPIClient } from './reporting_api_client'; diff --git a/x-pack/plugins/reporting/public/management/components/report_info_flyout_content.tsx b/x-pack/plugins/reporting/public/management/components/report_info_flyout_content.tsx index cfc780a9664449..e111285d02d52a 100644 --- a/x-pack/plugins/reporting/public/management/components/report_info_flyout_content.tsx +++ b/x-pack/plugins/reporting/public/management/components/report_info_flyout_content.tsx @@ -15,8 +15,8 @@ import { EuiSpacer, } from '@elastic/eui'; import moment from 'moment'; - import { VisualReportingSoftDisabledError } from '@kbn/reporting-common/errors'; + import { USES_HEADLESS_JOB_TYPES } from '../../../common/constants'; import type { Job } from '../../lib/job'; diff --git a/x-pack/plugins/reporting/public/management/report_listing.test.ts b/x-pack/plugins/reporting/public/management/report_listing.test.ts index 1b8e08e337dd40..d43930cff5af98 100644 --- a/x-pack/plugins/reporting/public/management/report_listing.test.ts +++ b/x-pack/plugins/reporting/public/management/report_listing.test.ts @@ -5,17 +5,16 @@ * 2.0. */ -import type { Observable } from 'rxjs'; import { act } from 'react-dom/test-utils'; +import type { Observable } from 'rxjs'; import type { ILicense } from '@kbn/licensing-plugin/public'; +import { IlmPolicyMigrationStatus } from '@kbn/reporting-common/types'; import { ListingProps as Props } from '.'; - -import { setup, TestBed, TestDependencies, mockJobs } from './__test__'; import { Job } from '../lib/job'; +import { TestBed, TestDependencies, mockJobs, setup } from './__test__'; import { mockConfig } from './__test__/report_listing.test.helpers'; -import { IlmPolicyMigrationStatus } from '@kbn/reporting-export-types-helpers-public'; describe('ReportListing', () => { let testBed: TestBed; diff --git a/x-pack/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx b/x-pack/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx index e52e5763b343de..7b9e8f78eca443 100644 --- a/x-pack/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx +++ b/x-pack/plugins/reporting/public/panel_actions/get_csv_panel_action.tsx @@ -5,22 +5,24 @@ * 2.0. */ -import { i18n } from '@kbn/i18n'; +import { firstValueFrom, Observable } from 'rxjs'; + import type { CoreSetup, NotificationsSetup } from '@kbn/core/public'; import { CoreStart } from '@kbn/core/public'; import type { ISearchEmbeddable } from '@kbn/discover-plugin/public'; -import type { SavedSearch } from '@kbn/saved-search-plugin/public'; import { loadSharingDataHelpers, SEARCH_EMBEDDABLE_TYPE } from '@kbn/discover-plugin/public'; import type { IEmbeddable } from '@kbn/embeddable-plugin/public'; import { ViewMode } from '@kbn/embeddable-plugin/public'; +import { i18n } from '@kbn/i18n'; +import { CSV_REPORTING_ACTION } from '@kbn/reporting-export-types-csv-common'; +import type { SavedSearch } from '@kbn/saved-search-plugin/public'; import type { UiActionsActionDefinition as ActionDefinition } from '@kbn/ui-actions-plugin/public'; import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; -import { firstValueFrom, Observable } from 'rxjs'; + import { checkLicense } from '../lib/license_check'; import { ReportingAPIClient } from '../lib/reporting_api_client'; import type { ReportingPublicPluginStartDendencies } from '../plugin'; -export const CSV_REPORTING_ACTION = 'downloadCsvReport'; function isSavedSearchEmbeddable( embeddable: IEmbeddable | ISearchEmbeddable ): embeddable is ISearchEmbeddable { diff --git a/x-pack/plugins/reporting/public/redirect/redirect_app.tsx b/x-pack/plugins/reporting/public/redirect/redirect_app.tsx index eb344a4c9fcd2a..440bb67762746a 100644 --- a/x-pack/plugins/reporting/public/redirect/redirect_app.tsx +++ b/x-pack/plugins/reporting/public/redirect/redirect_app.tsx @@ -5,18 +5,18 @@ * 2.0. */ -import React, { useEffect, useState } from 'react'; -import type { FunctionComponent } from 'react'; import { parse } from 'query-string'; -import { i18n } from '@kbn/i18n'; +import type { FunctionComponent } from 'react'; +import React, { useEffect, useState } from 'react'; + import { EuiCallOut, EuiCodeBlock } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; import type { ScopedHistory } from '@kbn/core/public'; +import { LocatorParams } from '@kbn/reporting-common/types'; import type { ScreenshotModePluginSetup } from '@kbn/screenshot-mode-plugin/public'; -import { LocatorParams } from '@kbn/reporting-export-types-helpers-public'; import { REPORTING_REDIRECT_LOCATOR_STORE_KEY } from '../../common/constants'; - import { ReportingAPIClient } from '../lib/reporting_api_client'; import type { SharePluginSetup } from '../shared_imports'; diff --git a/x-pack/plugins/reporting/public/share_context_menu/register_csv_reporting.tsx b/x-pack/plugins/reporting/public/share_context_menu/register_csv_reporting.tsx index b650d7a0a8e792..17f26c6c34e8ab 100644 --- a/x-pack/plugins/reporting/public/share_context_menu/register_csv_reporting.tsx +++ b/x-pack/plugins/reporting/public/share_context_menu/register_csv_reporting.tsx @@ -7,13 +7,15 @@ import { i18n } from '@kbn/i18n'; import React from 'react'; + +import { CSV_JOB_TYPE } from '@kbn/reporting-export-types-csv-common'; + import type { SearchSourceFields } from '@kbn/data-plugin/common'; import { ShareContext, ShareMenuProvider } from '@kbn/share-plugin/public'; import { checkLicense } from '../lib/license_check'; -import { ExportPanelShareOpts } from '.'; +import type { ExportPanelShareOpts } from '.'; import { ReportingPanelContent } from './reporting_panel_content_lazy'; -const CSV_JOB_TYPE = 'csv_searchsource'; export const reportingCsvShareProvider = ({ apiClient, toasts, diff --git a/x-pack/plugins/reporting/public/share_context_menu/reporting_panel_content/reporting_panel_content.tsx b/x-pack/plugins/reporting/public/share_context_menu/reporting_panel_content/reporting_panel_content.tsx index d324dd796c0913..920f74a4f2bbab 100644 --- a/x-pack/plugins/reporting/public/share_context_menu/reporting_panel_content/reporting_panel_content.tsx +++ b/x-pack/plugins/reporting/public/share_context_menu/reporting_panel_content/reporting_panel_content.tsx @@ -8,6 +8,10 @@ import React, { Component, ReactElement } from 'react'; import url from 'url'; +import { CSV_REPORT_TYPE } from '@kbn/reporting-export-types-csv-common'; +import { PDF_REPORT_TYPE, PDF_REPORT_TYPE_V2 } from '@kbn/reporting-export-types-pdf-common'; +import { PNG_REPORT_TYPE, PNG_REPORT_TYPE_V2 } from '@kbn/reporting-export-types-png-common'; + import { EuiAccordion, EuiButton, @@ -23,13 +27,6 @@ import { i18n } from '@kbn/i18n'; import { FormattedMessage, InjectedIntl, injectI18n } from '@kbn/i18n-react'; import { toMountPoint } from '@kbn/kibana-react-plugin/public'; import type { BaseParams } from '@kbn/reporting-common/types'; -import { - CSV_REPORT_TYPE, - PDF_REPORT_TYPE, - PDF_REPORT_TYPE_V2, - PNG_REPORT_TYPE, - PNG_REPORT_TYPE_V2, -} from '@kbn/reporting-common'; import { ReportingAPIClient } from '../../lib/reporting_api_client'; import { ErrorUnsavedWorkPanel, ErrorUrlTooLongPanel } from './components'; diff --git a/x-pack/plugins/reporting/public/shared/get_shared_components.tsx b/x-pack/plugins/reporting/public/shared/get_shared_components.tsx index ec6ae236298c43..577f0135f137de 100644 --- a/x-pack/plugins/reporting/public/shared/get_shared_components.tsx +++ b/x-pack/plugins/reporting/public/shared/get_shared_components.tsx @@ -6,8 +6,11 @@ */ import { CoreSetup } from '@kbn/core/public'; -import { PDF_REPORT_TYPE_V2, PDF_REPORT_TYPE, PNG_REPORT_TYPE_V2 } from '@kbn/reporting-common'; import React from 'react'; + +import { PDF_REPORT_TYPE, PDF_REPORT_TYPE_V2 } from '@kbn/reporting-export-types-pdf-common'; +import { PNG_REPORT_TYPE_V2 } from '@kbn/reporting-export-types-png-common'; + import { ReportingAPIClient } from '../lib/reporting_api_client'; import { ReportingPanelProps } from '../share_context_menu/reporting_panel_content'; import { ScreenCapturePanelContent } from '../share_context_menu/screen_capture_panel_content_lazy'; diff --git a/x-pack/plugins/reporting/server/config/create_config.test.ts b/x-pack/plugins/reporting/server/config/create_config.test.ts index dbb16d050297f1..bd65ad245e89d8 100644 --- a/x-pack/plugins/reporting/server/config/create_config.test.ts +++ b/x-pack/plugins/reporting/server/config/create_config.test.ts @@ -7,7 +7,7 @@ import type { CoreSetup, HttpServerInfo, Logger } from '@kbn/core/server'; import { coreMock, loggingSystemMock } from '@kbn/core/server/mocks'; -import { createMockConfigSchema } from '../test_helpers'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { createConfig } from './create_config'; describe('Reporting server createConfig', () => { diff --git a/x-pack/plugins/reporting/server/config/index.ts b/x-pack/plugins/reporting/server/config/index.ts index 7c2f6030965c3c..01b9574d07b47e 100644 --- a/x-pack/plugins/reporting/server/config/index.ts +++ b/x-pack/plugins/reporting/server/config/index.ts @@ -9,8 +9,7 @@ import { get } from 'lodash'; import { PluginConfigDescriptor } from '@kbn/core/server'; import { i18n } from '@kbn/i18n'; - -import { ConfigSchema, ReportingConfigType } from './schema'; +import { ConfigSchema, ReportingConfigType } from '@kbn/reporting-config-server'; export const config: PluginConfigDescriptor = { exposeToBrowser: { poll: true, roles: true, export_types: true, statefulSettings: true }, diff --git a/x-pack/plugins/reporting/server/core.ts b/x-pack/plugins/reporting/server/core.ts index 6195568b333eb4..dd046b2daef226 100644 --- a/x-pack/plugins/reporting/server/core.ts +++ b/x-pack/plugins/reporting/server/core.ts @@ -33,9 +33,8 @@ import { CsvSearchSourceImmediateExportType, CsvV2ExportType, } from '@kbn/reporting-export-types-csv'; -import { PdfV1ExportType } from '@kbn/reporting-export-types-deprecated'; -import { ExportType } from '@kbn/reporting-export-types-helpers-server'; -import { PdfExportType } from '@kbn/reporting-export-types-pdf'; +import { ExportType } from '@kbn/reporting-server'; +import { PdfV1ExportType, PdfExportType } from '@kbn/reporting-export-types-pdf'; import { PngExportType } from '@kbn/reporting-export-types-png'; import { PdfScreenshotResult, diff --git a/x-pack/plugins/reporting/server/deprecations/migrate_existing_indices_ilm_policy.test.ts b/x-pack/plugins/reporting/server/deprecations/migrate_existing_indices_ilm_policy.test.ts index 5dbbb9e9570c13..9f0a10b861adb9 100644 --- a/x-pack/plugins/reporting/server/deprecations/migrate_existing_indices_ilm_policy.test.ts +++ b/x-pack/plugins/reporting/server/deprecations/migrate_existing_indices_ilm_policy.test.ts @@ -7,9 +7,10 @@ import type { GetDeprecationsContext } from '@kbn/core/server'; import { elasticsearchServiceMock, savedObjectsClientMock } from '@kbn/core/server/mocks'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { ReportingCore } from '../core'; -import { createMockConfigSchema, createMockReportingCore } from '../test_helpers'; +import { createMockReportingCore } from '../test_helpers'; import { getDeprecationsInfo } from './migrate_existing_indices_ilm_policy'; diff --git a/x-pack/plugins/reporting/server/deprecations/reporting_role.test.ts b/x-pack/plugins/reporting/server/deprecations/reporting_role.test.ts index 66559270290561..4f58767e78b060 100644 --- a/x-pack/plugins/reporting/server/deprecations/reporting_role.test.ts +++ b/x-pack/plugins/reporting/server/deprecations/reporting_role.test.ts @@ -7,12 +7,9 @@ import { GetDeprecationsContext, IScopedClusterClient } from '@kbn/core/server'; import { elasticsearchServiceMock } from '@kbn/core/server/mocks'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { ReportingCore } from '..'; -import { - createMockConfigSchema, - createMockPluginSetup, - createMockReportingCore, -} from '../test_helpers'; +import { createMockPluginSetup, createMockReportingCore } from '../test_helpers'; import { getDeprecationsInfo } from './reporting_role'; let reportingCore: ReportingCore; diff --git a/x-pack/plugins/reporting/server/lib/check_license.ts b/x-pack/plugins/reporting/server/lib/check_license.ts index b2cc62dcabb792..a16c2a260d6ea1 100644 --- a/x-pack/plugins/reporting/server/lib/check_license.ts +++ b/x-pack/plugins/reporting/server/lib/check_license.ts @@ -6,7 +6,7 @@ */ import { ILicense } from '@kbn/licensing-plugin/server'; -import { ExportType } from '@kbn/reporting-export-types-helpers-server'; +import { ExportType } from '@kbn/reporting-server'; import { ExportTypesRegistry } from './export_types_registry'; export interface LicenseCheckResult { diff --git a/x-pack/plugins/reporting/server/lib/check_params_version.ts b/x-pack/plugins/reporting/server/lib/check_params_version.ts index bf6cb79c1f4403..b84cf0c01dc429 100644 --- a/x-pack/plugins/reporting/server/lib/check_params_version.ts +++ b/x-pack/plugins/reporting/server/lib/check_params_version.ts @@ -6,8 +6,8 @@ */ import type { Logger } from '@kbn/core/server'; +import type { BaseParams } from '@kbn/reporting-common/types'; import { UNVERSIONED_VERSION } from '../../common/constants'; -import { BaseParams } from '../types'; export function checkParamsVersion(jobParams: BaseParams, logger: Logger) { if (jobParams.version) { diff --git a/x-pack/plugins/reporting/server/lib/event_logger/logger.test.ts b/x-pack/plugins/reporting/server/lib/event_logger/logger.test.ts index cbff4ed0c1d833..84e625cc3981ef 100644 --- a/x-pack/plugins/reporting/server/lib/event_logger/logger.test.ts +++ b/x-pack/plugins/reporting/server/lib/event_logger/logger.test.ts @@ -7,7 +7,8 @@ import { loggingSystemMock } from '@kbn/core/server/mocks'; import { ConcreteTaskInstance } from '@kbn/task-manager-plugin/server'; -import { BasePayload } from '../../types'; +import type { BasePayload } from '@kbn/reporting-common/types'; + import { Report } from '../store'; import { ReportingEventLogger, reportingEventLoggerFactory } from './logger'; diff --git a/x-pack/plugins/reporting/server/lib/export_types_registry.ts b/x-pack/plugins/reporting/server/lib/export_types_registry.ts index 2ac2846869f451..23aa3508dc3f45 100644 --- a/x-pack/plugins/reporting/server/lib/export_types_registry.ts +++ b/x-pack/plugins/reporting/server/lib/export_types_registry.ts @@ -6,7 +6,7 @@ */ import { isString } from 'lodash'; -import { ExportType } from '@kbn/reporting-export-types-helpers-server'; +import { ExportType } from '@kbn/reporting-server'; type GetCallbackFn = (item: ExportType) => boolean; diff --git a/x-pack/plugins/reporting/server/lib/store/store.test.ts b/x-pack/plugins/reporting/server/lib/store/store.test.ts index 64556ef1a2c22b..d73b2df5ca172b 100644 --- a/x-pack/plugins/reporting/server/lib/store/store.test.ts +++ b/x-pack/plugins/reporting/server/lib/store/store.test.ts @@ -6,8 +6,9 @@ */ import * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { ReportingCore } from '../..'; -import { createMockConfigSchema, createMockReportingCore } from '../../test_helpers'; +import { createMockReportingCore } from '../../test_helpers'; import { Report, ReportDocument, ReportingStore, SavedReport } from '.'; describe('ReportingStore', () => { diff --git a/x-pack/plugins/reporting/server/lib/tasks/execute_report.test.ts b/x-pack/plugins/reporting/server/lib/tasks/execute_report.test.ts index 99a7b5adcc4907..a091a23bcc1f13 100644 --- a/x-pack/plugins/reporting/server/lib/tasks/execute_report.test.ts +++ b/x-pack/plugins/reporting/server/lib/tasks/execute_report.test.ts @@ -7,14 +7,15 @@ import { loggingSystemMock } from '@kbn/core/server/mocks'; import { KibanaShuttingDownError } from '@kbn/reporting-common'; -import type { ExportType } from '@kbn/reporting-export-types-helpers-server'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; +import type { ExportType } from '@kbn/reporting-server'; import type { RunContext } from '@kbn/task-manager-plugin/server'; import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; import { ExecuteReportTask } from '.'; import type { ReportingCore } from '../..'; import type { ReportingConfigType } from '../../config'; -import { createMockConfigSchema, createMockReportingCore } from '../../test_helpers'; +import { createMockReportingCore } from '../../test_helpers'; import type { SavedReport } from '../store'; const logger = loggingSystemMock.createLogger(); diff --git a/x-pack/plugins/reporting/server/lib/tasks/index.ts b/x-pack/plugins/reporting/server/lib/tasks/index.ts index f60bcefd738532..7708f31f7147fc 100644 --- a/x-pack/plugins/reporting/server/lib/tasks/index.ts +++ b/x-pack/plugins/reporting/server/lib/tasks/index.ts @@ -6,8 +6,8 @@ */ import { TaskRunCreatorFunction } from '@kbn/task-manager-plugin/server'; +import { BasePayload } from '@kbn/reporting-common/types'; import { ReportSource } from '../../../common/types'; -import { BasePayload } from '../../types'; export const REPORTING_EXECUTE_TYPE = 'report:execute'; export const REPORTING_MONITOR_TYPE = 'reports:monitor'; diff --git a/x-pack/plugins/reporting/server/lib/tasks/monitor_report.test.ts b/x-pack/plugins/reporting/server/lib/tasks/monitor_report.test.ts index 7bf6dd7e50678c..77d7204abe0691 100644 --- a/x-pack/plugins/reporting/server/lib/tasks/monitor_report.test.ts +++ b/x-pack/plugins/reporting/server/lib/tasks/monitor_report.test.ts @@ -6,12 +6,13 @@ */ import { loggingSystemMock } from '@kbn/core/server/mocks'; -import { ReportingCore } from '../..'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { RunContext } from '@kbn/task-manager-plugin/server'; import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; -import { ReportingConfigType } from '../../config'; -import { createMockConfigSchema, createMockReportingCore } from '../../test_helpers'; import { MonitorReportsTask } from '.'; +import { ReportingCore } from '../..'; +import { ReportingConfigType } from '../../config'; +import { createMockReportingCore } from '../../test_helpers'; const logger = loggingSystemMock.createLogger(); diff --git a/x-pack/plugins/reporting/server/mocks/index.ts b/x-pack/plugins/reporting/server/mocks/index.ts index 60e552dea16725..ea9d448aff1670 100644 --- a/x-pack/plugins/reporting/server/mocks/index.ts +++ b/x-pack/plugins/reporting/server/mocks/index.ts @@ -5,11 +5,10 @@ * 2.0. */ -import { CommonReportingSetup } from '@kbn/reporting-export-types-helpers-server'; import { ReportingStart } from '../types'; export const reportingMock = { - createStart: (): CommonReportingSetup | ReportingStart => ({ + createStart: (): ReportingStart => ({ usesUiCapabilities: () => false, registerExportTypes: () => {}, }), diff --git a/x-pack/plugins/reporting/server/plugin.test.ts b/x-pack/plugins/reporting/server/plugin.test.ts index 86cfc8ab8ae6f3..98f7e08b7c857e 100644 --- a/x-pack/plugins/reporting/server/plugin.test.ts +++ b/x-pack/plugins/reporting/server/plugin.test.ts @@ -4,31 +4,28 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ + +import { Writable } from 'stream'; + import nodeCrypto from '@elastic/node-crypto'; import type { CoreSetup, CoreStart, Logger } from '@kbn/core/server'; import { coreMock, elasticsearchServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; import { dataPluginMock } from '@kbn/data-plugin/server/mocks'; import { discoverPluginMock } from '@kbn/discover-plugin/server/mocks'; import { CancellationToken } from '@kbn/reporting-common'; -import { setFieldFormats } from '@kbn/reporting-export-types-helpers-server'; -import { - PNG_REPORT_TYPE_V2, - PDF_REPORT_TYPE_V2, - PDF_REPORT_TYPE, - CSV_REPORT_TYPE, - CSV_REPORT_TYPE_V2, -} from '@kbn/reporting-common/report_types'; +import { setFieldFormats } from '@kbn/reporting-server'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; + +import { CSV_REPORT_TYPE, CSV_REPORT_TYPE_V2 } from '@kbn/reporting-export-types-csv-common'; +import { PDF_REPORT_TYPE, PDF_REPORT_TYPE_V2 } from '@kbn/reporting-export-types-pdf-common'; +import { PNG_REPORT_TYPE_V2 } from '@kbn/reporting-export-types-png-common'; + import { CsvSearchSourceExportType } from '@kbn/reporting-export-types-csv'; import { createMockScreenshottingStart } from '@kbn/screenshotting-plugin/server/mock'; -import { Writable } from 'stream'; import type { ReportingCore, ReportingInternalStart } from './core'; import { ExportTypesRegistry } from './lib/export_types_registry'; import { ReportingPlugin } from './plugin'; -import { - createMockConfigSchema, - createMockPluginSetup, - createMockPluginStart, -} from './test_helpers'; +import { createMockPluginSetup, createMockPluginStart } from './test_helpers'; import type { ReportingSetupDeps } from './types'; const sleep = (time: number) => new Promise((r) => setTimeout(r, time)); diff --git a/x-pack/plugins/reporting/server/plugin.ts b/x-pack/plugins/reporting/server/plugin.ts index 3108e3bdd0c7c1..ca19617e199c58 100644 --- a/x-pack/plugins/reporting/server/plugin.ts +++ b/x-pack/plugins/reporting/server/plugin.ts @@ -12,20 +12,20 @@ import type { Plugin, PluginInitializerContext, } from '@kbn/core/server'; -import { setFieldFormats } from '@kbn/reporting-export-types-helpers-server'; +import { setFieldFormats } from '@kbn/reporting-server'; import { ReportingCore } from '.'; import { PLUGIN_ID } from '../common/constants'; -import { registerUiSettings, ReportingConfigType } from './config'; +import { ReportingConfigType, registerUiSettings } from './config'; import { registerDeprecations } from './deprecations'; import { ReportingStore } from './lib'; import { registerRoutes } from './routes'; import type { - ReportingRequestHandlerContext, ReportingSetup, ReportingSetupDeps, ReportingStart, ReportingStartDeps, } from './types'; +import { ReportingRequestHandlerContext } from './types'; import { registerReportingUsageCollector } from './usage'; /* diff --git a/x-pack/plugins/reporting/server/routes/common/authorized_user_pre_routing.test.ts b/x-pack/plugins/reporting/server/routes/common/authorized_user_pre_routing.test.ts index b4c139e6276a44..a10718bf6376f3 100644 --- a/x-pack/plugins/reporting/server/routes/common/authorized_user_pre_routing.test.ts +++ b/x-pack/plugins/reporting/server/routes/common/authorized_user_pre_routing.test.ts @@ -7,10 +7,10 @@ import { KibanaRequest, KibanaResponseFactory } from '@kbn/core/server'; import { coreMock, httpServerMock } from '@kbn/core/server/mocks'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { ReportingCore } from '../..'; import { ReportingInternalSetup, ReportingInternalStart } from '../../core'; import { - createMockConfigSchema, createMockPluginSetup, createMockPluginStart, createMockReportingCore, diff --git a/x-pack/plugins/reporting/server/routes/common/authorized_user_pre_routing.ts b/x-pack/plugins/reporting/server/routes/common/authorized_user_pre_routing.ts index d4f6e4bf49ab06..ee58d27d55ea0a 100644 --- a/x-pack/plugins/reporting/server/routes/common/authorized_user_pre_routing.ts +++ b/x-pack/plugins/reporting/server/routes/common/authorized_user_pre_routing.ts @@ -6,11 +6,12 @@ */ import { RequestHandler, RouteMethod } from '@kbn/core/server'; -import { AuthenticatedUser } from '@kbn/security-plugin/server'; import { i18n } from '@kbn/i18n'; +import { AuthenticatedUser } from '@kbn/security-plugin/server'; + import { ReportingCore } from '../../core'; +import { ReportingRequestHandlerContext } from '../../types'; import { getUser } from './get_user'; -import type { ReportingRequestHandlerContext } from '../../types'; const superuserRole = 'superuser'; diff --git a/x-pack/plugins/reporting/server/routes/common/generate/request_handler.test.ts b/x-pack/plugins/reporting/server/routes/common/generate/request_handler.test.ts index b4d05aef7d122d..16d1107da4b567 100644 --- a/x-pack/plugins/reporting/server/routes/common/generate/request_handler.test.ts +++ b/x-pack/plugins/reporting/server/routes/common/generate/request_handler.test.ts @@ -4,16 +4,6 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import { KibanaRequest, KibanaResponseFactory } from '@kbn/core/server'; -import rison from '@kbn/rison'; -import { coreMock, httpServerMock, loggingSystemMock } from '@kbn/core/server/mocks'; -import { ReportingCore } from '../../..'; -import { Report, ReportingStore } from '../../../lib/store'; -import { createMockConfigSchema, createMockReportingCore } from '../../../test_helpers'; -import { ReportingJobResponse, ReportingRequestHandlerContext } from '../../../types'; -import { RequestHandler } from './request_handler'; -import { JobParamsPDFDeprecated } from '@kbn/reporting-export-types-deprecated/printable_pdf'; -import { CommonReportingSetup, TaskPayloadPDFV2 } from '@kbn/reporting-export-types-helpers-server'; jest.mock( 'puid', @@ -25,7 +15,24 @@ jest.mock( } ); -jest.mock('@kbn/reporting-export-types-helpers-server/crypto', () => ({ +import rison from '@kbn/rison'; + +import { KibanaRequest, KibanaResponseFactory } from '@kbn/core/server'; +import { coreMock, httpServerMock, loggingSystemMock } from '@kbn/core/server/mocks'; +import { JobParamsPDFDeprecated, TaskPayloadPDFV2 } from '@kbn/reporting-export-types-pdf-common'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; + +import { ReportingCore } from '../../..'; +import { Report, ReportingStore } from '../../../lib/store'; +import { createMockReportingCore } from '../../../test_helpers'; +import { + ReportingJobResponse, + ReportingRequestHandlerContext, + ReportingSetup, +} from '../../../types'; +import { RequestHandler } from './request_handler'; + +jest.mock('@kbn/reporting-server/crypto', () => ({ cryptoFactory: () => ({ encrypt: () => `hello mock cypher text`, }), @@ -90,7 +97,7 @@ describe('Handle request to generate', () => { (mockResponseFactory.badRequest as jest.Mock) = jest.fn((args: unknown) => args); mockContext = getMockContext(); - mockContext.reporting = Promise.resolve({} as CommonReportingSetup); + mockContext.reporting = Promise.resolve({} as ReportingSetup); requestHandler = new RequestHandler( reportingCore, diff --git a/x-pack/plugins/reporting/server/routes/common/generate/request_handler.ts b/x-pack/plugins/reporting/server/routes/common/generate/request_handler.ts index b523a5f6815b55..10f368097c6867 100644 --- a/x-pack/plugins/reporting/server/routes/common/generate/request_handler.ts +++ b/x-pack/plugins/reporting/server/routes/common/generate/request_handler.ts @@ -6,19 +6,21 @@ */ import Boom from '@hapi/boom'; +import moment from 'moment'; + import { schema, TypeOf } from '@kbn/config-schema'; import type { KibanaRequest, KibanaResponseFactory, Logger } from '@kbn/core/server'; import { i18n } from '@kbn/i18n'; -import { cryptoFactory } from '@kbn/reporting-export-types-helpers-server'; +import type { BaseParams } from '@kbn/reporting-common/types'; +import { cryptoFactory } from '@kbn/reporting-server'; import rison from '@kbn/rison'; -import moment from 'moment'; + import { Counters, getCounters } from '..'; import type { ReportingCore } from '../../..'; import { PUBLIC_ROUTES } from '../../../../common/constants'; import { checkParamsVersion } from '../../../lib'; import { Report } from '../../../lib/store'; import type { - BaseParams, ReportingJobResponse, ReportingRequestHandlerContext, ReportingUser, diff --git a/x-pack/plugins/reporting/server/routes/common/jobs/get_document_payload.test.ts b/x-pack/plugins/reporting/server/routes/common/jobs/get_document_payload.test.ts index 4f62980cb8e3b2..00a47c703ff90b 100644 --- a/x-pack/plugins/reporting/server/routes/common/jobs/get_document_payload.test.ts +++ b/x-pack/plugins/reporting/server/routes/common/jobs/get_document_payload.test.ts @@ -5,11 +5,15 @@ * 2.0. */ -import { PDF_JOB_TYPE, CSV_JOB_TYPE, PDF_JOB_TYPE_V2 } from '@kbn/reporting-common'; import { Readable } from 'stream'; + +import { CSV_JOB_TYPE } from '@kbn/reporting-export-types-csv-common'; +import { PDF_JOB_TYPE, PDF_JOB_TYPE_V2 } from '@kbn/reporting-export-types-pdf-common'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; + import { ReportApiJSON } from '../../../../common/types'; import { ContentStream, getContentStream, statuses } from '../../../lib'; -import { createMockConfigSchema, createMockReportingCore } from '../../../test_helpers'; +import { createMockReportingCore } from '../../../test_helpers'; import { getDocumentPayloadFactory } from './get_document_payload'; import { jobsQueryFactory } from './jobs_query'; diff --git a/x-pack/plugins/reporting/server/routes/common/jobs/get_document_payload.ts b/x-pack/plugins/reporting/server/routes/common/jobs/get_document_payload.ts index a7f57933a664e6..588f5c9f661b38 100644 --- a/x-pack/plugins/reporting/server/routes/common/jobs/get_document_payload.ts +++ b/x-pack/plugins/reporting/server/routes/common/jobs/get_document_payload.ts @@ -5,12 +5,12 @@ * 2.0. */ +import { CSV_JOB_TYPE, CSV_JOB_TYPE_DEPRECATED } from '@kbn/reporting-export-types-csv-common'; + import { ResponseHeaders } from '@kbn/core-http-server'; -import { CSV_JOB_TYPE } from '@kbn/reporting-common'; -import { ExportType } from '@kbn/reporting-export-types-helpers-server'; +import { ExportType } from '@kbn/reporting-server'; import { Stream } from 'stream'; import { ReportingCore } from '../../..'; -import { CSV_JOB_TYPE_DEPRECATED } from '../../../../common/constants'; import { ReportApiJSON } from '../../../../common/types'; import { getContentStream, statuses } from '../../../lib'; import { jobsQueryFactory } from './jobs_query'; diff --git a/x-pack/plugins/reporting/server/routes/common/jobs/get_job_routes.ts b/x-pack/plugins/reporting/server/routes/common/jobs/get_job_routes.ts index c0d29849e94f38..343410ddf3ca49 100644 --- a/x-pack/plugins/reporting/server/routes/common/jobs/get_job_routes.ts +++ b/x-pack/plugins/reporting/server/routes/common/jobs/get_job_routes.ts @@ -5,17 +5,19 @@ * 2.0. */ +import { promisify } from 'util'; + import { schema, TypeOf } from '@kbn/config-schema'; import { KibanaRequest, KibanaResponseFactory } from '@kbn/core-http-server'; -import { promisify } from 'util'; + import { getCounters } from '..'; import { ReportingCore } from '../../..'; import { ALLOWED_JOB_CONTENT_TYPES } from '../../../../common/constants'; import { getContentStream } from '../../../lib'; import { ReportingRequestHandlerContext, ReportingUser } from '../../../types'; import { handleUnavailable } from '../generate'; -import { jobsQueryFactory } from './jobs_query'; import { jobManagementPreRouting } from './job_management_pre_routing'; +import { jobsQueryFactory } from './jobs_query'; const validate = { params: schema.object({ diff --git a/x-pack/plugins/reporting/server/routes/common/jobs/job_management_pre_routing.test.ts b/x-pack/plugins/reporting/server/routes/common/jobs/job_management_pre_routing.test.ts index 3d4a182d0d7430..ce0f6b5697eed0 100644 --- a/x-pack/plugins/reporting/server/routes/common/jobs/job_management_pre_routing.test.ts +++ b/x-pack/plugins/reporting/server/routes/common/jobs/job_management_pre_routing.test.ts @@ -6,10 +6,10 @@ */ import { httpServerMock } from '@kbn/core/server/mocks'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { ReportingCore } from '../../..'; import { ReportingInternalSetup, ReportingInternalStart } from '../../../core'; import { - createMockConfigSchema, createMockPluginSetup, createMockPluginStart, createMockReportingCore, diff --git a/x-pack/plugins/reporting/server/routes/internal/deprecations/integration_tests/deprecations.test.ts b/x-pack/plugins/reporting/server/routes/internal/deprecations/integration_tests/deprecations.test.ts index 8b82e2bef151f8..e143216447af05 100644 --- a/x-pack/plugins/reporting/server/routes/internal/deprecations/integration_tests/deprecations.test.ts +++ b/x-pack/plugins/reporting/server/routes/internal/deprecations/integration_tests/deprecations.test.ts @@ -8,11 +8,11 @@ import { setupServer } from '@kbn/core-test-helpers-test-utils'; import { loggingSystemMock } from '@kbn/core/server/mocks'; import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { securityMock } from '@kbn/security-plugin/server/mocks'; import supertest from 'supertest'; import { INTERNAL_ROUTES } from '../../../../../common/constants'; import { - createMockConfigSchema, createMockPluginSetup, createMockPluginStart, createMockReportingCore, diff --git a/x-pack/plugins/reporting/server/routes/internal/diagnostic/integration_tests/browser.test.ts b/x-pack/plugins/reporting/server/routes/internal/diagnostic/integration_tests/browser.test.ts index 49591d4e237b05..a395fab20e8d3d 100644 --- a/x-pack/plugins/reporting/server/routes/internal/diagnostic/integration_tests/browser.test.ts +++ b/x-pack/plugins/reporting/server/routes/internal/diagnostic/integration_tests/browser.test.ts @@ -5,22 +5,19 @@ * 2.0. */ +import * as Rx from 'rxjs'; +import supertest from 'supertest'; + import { setupServer } from '@kbn/core-test-helpers-test-utils'; import { docLinksServiceMock, loggingSystemMock } from '@kbn/core/server/mocks'; -import { CommonReportingSetup } from '@kbn/reporting-export-types-helpers-server'; -import type { ScreenshottingStart } from '@kbn/screenshotting-plugin/server'; +import { ScreenshottingStart } from '@kbn/screenshotting-plugin/server'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { IUsageCounter } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counter'; -import * as Rx from 'rxjs'; -import supertest from 'supertest'; import { ReportingCore } from '../../../..'; import { INTERNAL_ROUTES } from '../../../../../common/constants'; import { reportingMock } from '../../../../mocks'; -import { - createMockConfigSchema, - createMockPluginSetup, - createMockReportingCore, -} from '../../../../test_helpers'; -import type { ReportingRequestHandlerContext } from '../../../../types'; +import { createMockPluginSetup, createMockReportingCore } from '../../../../test_helpers'; +import { ReportingRequestHandlerContext } from '../../../../types'; import { registerDiagnoseBrowser } from '../browser'; type SetupServerReturn = Awaited>; @@ -49,7 +46,7 @@ describe(`POST ${INTERNAL_ROUTES.DIAGNOSE.BROWSER}`, () => { httpSetup.registerRouteHandlerContext( reportingSymbol, 'reporting', - () => reportingMock.createStart() as unknown as CommonReportingSetup + () => reportingMock.createStart() ); const docLinksSetupMock = docLinksServiceMock.createSetupContract(); diff --git a/x-pack/plugins/reporting/server/routes/internal/generate/csv_searchsource_immediate.ts b/x-pack/plugins/reporting/server/routes/internal/generate/csv_searchsource_immediate.ts index e40235ffe558e8..60e8da242ddbfc 100644 --- a/x-pack/plugins/reporting/server/routes/internal/generate/csv_searchsource_immediate.ts +++ b/x-pack/plugins/reporting/server/routes/internal/generate/csv_searchsource_immediate.ts @@ -6,15 +6,16 @@ */ import Boom from '@hapi/boom'; +import moment from 'moment'; + import { schema } from '@kbn/config-schema'; import type { KibanaRequest, Logger } from '@kbn/core/server'; import { + CSV_SEARCHSOURCE_IMMEDIATE_TYPE, JobParamsDownloadCSV, - ReportingRequestHandlerContext, -} from '@kbn/reporting-export-types-helpers-server'; -import moment from 'moment'; +} from '@kbn/reporting-export-types-csv-common'; import type { ReportingCore } from '../../..'; -import { CSV_SEARCHSOURCE_IMMEDIATE_TYPE, INTERNAL_ROUTES } from '../../../../common/constants'; +import { INTERNAL_ROUTES } from '../../../../common/constants'; import { PassThroughStream } from '../../../lib'; import { authorizedUserPreRouting, getCounters } from '../../common'; @@ -83,7 +84,7 @@ export function registerGenerateCsvFromSavedObjectImmediate( eventLog.logExecutionStart(); const taskPromise = csvSearchSourceImmediateExport - .runTask(null, req.body, context as ReportingRequestHandlerContext, stream, req) + .runTask(null, req.body, context, stream, req) .then((output) => { logger.info(`Job output size: ${stream.bytesWritten} bytes.`); diff --git a/x-pack/plugins/reporting/server/routes/internal/generate/integration_tests/generation_from_jobparams.test.ts b/x-pack/plugins/reporting/server/routes/internal/generate/integration_tests/generation_from_jobparams.test.ts index 6baeba4194c504..be416eab955ba3 100644 --- a/x-pack/plugins/reporting/server/routes/internal/generate/integration_tests/generation_from_jobparams.test.ts +++ b/x-pack/plugins/reporting/server/routes/internal/generate/integration_tests/generation_from_jobparams.test.ts @@ -5,15 +5,17 @@ * 2.0. */ +import { BehaviorSubject } from 'rxjs'; +import supertest from 'supertest'; +import rison from '@kbn/rison'; + import { setupServer } from '@kbn/core-test-helpers-test-utils'; import { coreMock, loggingSystemMock } from '@kbn/core/server/mocks'; import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; -import type { CommonReportingSetup } from '@kbn/reporting-export-types-helpers-server'; import { PdfExportType } from '@kbn/reporting-export-types-pdf'; -import rison from '@kbn/rison'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { IUsageCounter } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counter'; -import { BehaviorSubject } from 'rxjs'; -import supertest from 'supertest'; + import { ReportingCore } from '../../../..'; import { INTERNAL_ROUTES } from '../../../../../common/constants'; import { ReportingStore } from '../../../../lib'; @@ -21,12 +23,11 @@ import { ExportTypesRegistry } from '../../../../lib/export_types_registry'; import { Report } from '../../../../lib/store'; import { reportingMock } from '../../../../mocks'; import { - createMockConfigSchema, createMockPluginSetup, createMockPluginStart, createMockReportingCore, } from '../../../../test_helpers'; -import type { ReportingRequestHandlerContext } from '../../../../types'; +import { ReportingRequestHandlerContext } from '../../../../types'; import { registerGenerationRoutesInternal } from '../generate_from_jobparams'; type SetupServerReturn = Awaited>; @@ -59,7 +60,7 @@ describe(`POST ${INTERNAL_ROUTES.GENERATE_PREFIX}`, () => { httpSetup.registerRouteHandlerContext( reportingSymbol, 'reporting', - () => reportingMock.createStart() as unknown as CommonReportingSetup + () => reportingMock.createStart() ); const mockSetupDeps = createMockPluginSetup({ diff --git a/x-pack/plugins/reporting/server/routes/internal/management/integration_tests/jobs.test.ts b/x-pack/plugins/reporting/server/routes/internal/management/integration_tests/jobs.test.ts index 07d865f1349072..decc2300026e35 100644 --- a/x-pack/plugins/reporting/server/routes/internal/management/integration_tests/jobs.test.ts +++ b/x-pack/plugins/reporting/server/routes/internal/management/integration_tests/jobs.test.ts @@ -5,25 +5,28 @@ * 2.0. */ +import { BehaviorSubject } from 'rxjs'; +import { Readable } from 'stream'; +import supertest from 'supertest'; + jest.mock('../../../../lib/content_stream', () => ({ getContentStream: jest.fn(), })); + import { estypes } from '@elastic/elasticsearch'; import { setupServer } from '@kbn/core-test-helpers-test-utils'; -import type { ElasticsearchClientMock } from '@kbn/core/server/mocks'; +import { ElasticsearchClientMock } from '@kbn/core/server/mocks'; import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; -import type { CommonReportingSetup, ExportType } from '@kbn/reporting-export-types-helpers-server'; +import { ExportType } from '@kbn/reporting-server'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { IUsageCounter } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counter'; -import { BehaviorSubject } from 'rxjs'; -import { Readable } from 'stream'; -import supertest from 'supertest'; + import { ReportingCore } from '../../../..'; import { INTERNAL_ROUTES } from '../../../../../common/constants'; import { ReportingInternalSetup, ReportingInternalStart } from '../../../../core'; import { ContentStream, ExportTypesRegistry, getContentStream } from '../../../../lib'; import { reportingMock } from '../../../../mocks'; import { - createMockConfigSchema, createMockPluginSetup, createMockPluginStart, createMockReportingCore, @@ -75,7 +78,7 @@ describe(`GET ${INTERNAL_ROUTES.JOBS.DOWNLOAD_PREFIX}`, () => { httpSetup.registerRouteHandlerContext( reportingSymbol, 'reporting', - () => reportingMock.createStart() as unknown as CommonReportingSetup + () => reportingMock.createStart() ); mockSetupDeps = createMockPluginSetup({ diff --git a/x-pack/plugins/reporting/server/routes/public/integration_tests/generation_from_jobparams.test.ts b/x-pack/plugins/reporting/server/routes/public/integration_tests/generation_from_jobparams.test.ts index dd7f089f73a362..b534583da02c5b 100644 --- a/x-pack/plugins/reporting/server/routes/public/integration_tests/generation_from_jobparams.test.ts +++ b/x-pack/plugins/reporting/server/routes/public/integration_tests/generation_from_jobparams.test.ts @@ -5,14 +5,16 @@ * 2.0. */ +import rison from '@kbn/rison'; +import { BehaviorSubject } from 'rxjs'; +import supertest from 'supertest'; + import { setupServer } from '@kbn/core-test-helpers-test-utils'; import { coreMock, loggingSystemMock } from '@kbn/core/server/mocks'; import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; -import rison from '@kbn/rison'; -import { IUsageCounter } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counter'; import { PdfExportType } from '@kbn/reporting-export-types-pdf'; -import { BehaviorSubject } from 'rxjs'; -import supertest from 'supertest'; +import { IUsageCounter } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counter'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { ReportingCore } from '../../..'; import { PUBLIC_ROUTES } from '../../../../common/constants'; import { ReportingStore } from '../../../lib'; @@ -20,14 +22,12 @@ import { ExportTypesRegistry } from '../../../lib/export_types_registry'; import { Report } from '../../../lib/store'; import { reportingMock } from '../../../mocks'; import { - createMockConfigSchema, createMockPluginSetup, createMockPluginStart, createMockReportingCore, } from '../../../test_helpers'; -import type { ReportingRequestHandlerContext } from '../../../types'; +import { ReportingRequestHandlerContext } from '../../../types'; import { registerGenerationRoutesPublic } from '../generate_from_jobparams'; -import { CommonReportingSetup } from '@kbn/reporting-export-types-helpers-server'; type SetupServerReturn = Awaited>; @@ -59,7 +59,7 @@ describe(`POST ${PUBLIC_ROUTES.GENERATE_PREFIX}`, () => { httpSetup.registerRouteHandlerContext( reportingSymbol, 'reporting', - () => reportingMock.createStart() as unknown as CommonReportingSetup + () => reportingMock.createStart() ); const mockSetupDeps = createMockPluginSetup({ diff --git a/x-pack/plugins/reporting/server/routes/public/integration_tests/jobs.test.ts b/x-pack/plugins/reporting/server/routes/public/integration_tests/jobs.test.ts index bf2ff762716b02..b301b1546dabfd 100644 --- a/x-pack/plugins/reporting/server/routes/public/integration_tests/jobs.test.ts +++ b/x-pack/plugins/reporting/server/routes/public/integration_tests/jobs.test.ts @@ -8,22 +8,25 @@ jest.mock('../../../lib/content_stream', () => ({ getContentStream: jest.fn(), })); + +import { BehaviorSubject } from 'rxjs'; +import { Readable } from 'stream'; +import supertest from 'supertest'; + import { estypes } from '@elastic/elasticsearch'; import { setupServer } from '@kbn/core-test-helpers-test-utils'; import type { ElasticsearchClientMock } from '@kbn/core/server/mocks'; import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; +import type { ExportType } from '@kbn/reporting-server'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { IUsageCounter } from '@kbn/usage-collection-plugin/server/usage_counters/usage_counter'; -import { BehaviorSubject } from 'rxjs'; -import { Readable } from 'stream'; -import supertest from 'supertest'; + import { ReportingCore } from '../../..'; import { PUBLIC_ROUTES } from '../../../../common/constants'; import { ReportingInternalSetup, ReportingInternalStart } from '../../../core'; -import type { CommonReportingSetup, ExportType } from '@kbn/reporting-export-types-helpers-server'; import { ContentStream, ExportTypesRegistry, getContentStream } from '../../../lib'; import { reportingMock } from '../../../mocks'; import { - createMockConfigSchema, createMockPluginSetup, createMockPluginStart, createMockReportingCore, @@ -73,7 +76,7 @@ describe(`GET ${PUBLIC_ROUTES.JOBS.DOWNLOAD_PREFIX}`, () => { httpSetup.registerRouteHandlerContext( reportingSymbol, 'reporting', - () => reportingMock.createStart() as unknown as CommonReportingSetup + () => reportingMock.createStart() ); mockSetupDeps = createMockPluginSetup({ diff --git a/x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts b/x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts index 8b4c838e388aa4..d92174d3d71cdd 100644 --- a/x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts +++ b/x-pack/plugins/reporting/server/test_helpers/create_mock_reportingplugin.ts @@ -8,6 +8,8 @@ jest.mock('../routes'); jest.mock('../usage'); +import { BehaviorSubject } from 'rxjs'; + import { coreMock, docLinksServiceMock, @@ -21,12 +23,12 @@ import { featuresPluginMock } from '@kbn/features-plugin/server/mocks'; import { FieldFormatsRegistry } from '@kbn/field-formats-plugin/common'; import { fieldFormatsMock } from '@kbn/field-formats-plugin/common/mocks'; import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; -import { setFieldFormats } from '@kbn/reporting-export-types-helpers-server'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; +import { setFieldFormats } from '@kbn/reporting-server'; import { createMockScreenshottingStart } from '@kbn/screenshotting-plugin/server/mock'; import { securityMock } from '@kbn/security-plugin/server/mocks'; import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; -import { BehaviorSubject } from 'rxjs'; -import { DeepPartial } from 'utility-types'; + import { ReportingCore } from '..'; import { ReportingConfigType } from '../config'; import { ReportingInternalSetup, ReportingInternalStart } from '../core'; @@ -83,44 +85,6 @@ export const createMockPluginStart = async ( }; }; -export const createMockConfigSchema = ( - overrides: DeepPartial = {} -): ReportingConfigType => { - // deeply merge the defaults and the provided partial schema - return { - index: '.reporting', - encryptionKey: 'cool-encryption-key-where-did-you-find-it', - ...overrides, - kibanaServer: { - hostname: 'localhost', - ...overrides.kibanaServer, - }, - queue: { - indexInterval: 'week', - pollEnabled: true, - pollInterval: 3000, - timeout: 120000, - ...overrides.queue, - }, - csv: { - scroll: { size: 500, duration: '30s' }, - ...overrides.csv, - }, - roles: { - enabled: false, - ...overrides.roles, - }, - capture: { maxAttempts: 1 }, - export_types: { - pdf: { enabled: true }, - png: { enabled: true }, - csv: { enabled: true }, - ...overrides.export_types, - }, - statefulSettings: { enabled: true }, - } as ReportingConfigType; -}; - export const createMockReportingCore = async ( config: ReportingConfigType, setupDepsMock: ReportingInternalSetup | undefined = undefined, diff --git a/x-pack/plugins/reporting/server/test_helpers/index.ts b/x-pack/plugins/reporting/server/test_helpers/index.ts index 2ad4f4b027af25..781a074a5563e4 100644 --- a/x-pack/plugins/reporting/server/test_helpers/index.ts +++ b/x-pack/plugins/reporting/server/test_helpers/index.ts @@ -6,7 +6,6 @@ */ export { - createMockConfigSchema, createMockPluginSetup, createMockPluginStart, createMockReportingCore, diff --git a/x-pack/plugins/reporting/server/types.ts b/x-pack/plugins/reporting/server/types.ts index bc03e2b702ce15..2a9f61ef1f99cc 100644 --- a/x-pack/plugins/reporting/server/types.ts +++ b/x-pack/plugins/reporting/server/types.ts @@ -5,14 +5,13 @@ * 2.0. */ -import type { CustomRequestHandlerContext, IRouter } from '@kbn/core/server'; +import { CustomRequestHandlerContext } from '@kbn/core-http-request-handler-context-server'; import type { DataPluginStart } from '@kbn/data-plugin/server/plugin'; -import { DiscoverServerPluginStart } from '@kbn/discover-plugin/server'; +import type { DiscoverServerPluginStart } from '@kbn/discover-plugin/server'; import type { PluginSetupContract as FeaturesPluginSetup } from '@kbn/features-plugin/server'; -import { FieldFormatsStart } from '@kbn/field-formats-plugin/server'; +import type { FieldFormatsStart } from '@kbn/field-formats-plugin/server'; import type { LicensingPluginStart } from '@kbn/licensing-plugin/server'; -import type { BaseParams, BasePayload, UrlOrUrlLocatorTuple } from '@kbn/reporting-common/types'; -import { CommonReportingSetup } from '@kbn/reporting-export-types-helpers-server'; +import type { UrlOrUrlLocatorTuple } from '@kbn/reporting-common/types'; import type { ScreenshotModePluginSetup } from '@kbn/screenshot-mode-plugin/server'; import type { PdfScreenshotOptions as BasePdfScreenshotOptions, @@ -30,6 +29,7 @@ import type { TaskManagerStartContract, } from '@kbn/task-manager-plugin/server'; import type { UsageCollectionSetup } from '@kbn/usage-collection-plugin/server'; + import { ReportApiJSON } from '../common/types'; import type { ReportingConfigType } from './config'; import { ReportingCore } from './core'; @@ -74,6 +74,10 @@ export interface ReportingStartDeps { taskManager: TaskManagerStartContract; } +export type ReportingRequestHandlerContext = CustomRequestHandlerContext<{ + reporting: ReportingStart | null; +}>; + /** * Interface of a response to an HTTP request for our plugin to generate a report. * @public @@ -91,12 +95,6 @@ export interface ReportingJobResponse { job: ReportApiJSON; } -export type ReportingRequestHandlerContext = CustomRequestHandlerContext<{ - reporting: CommonReportingSetup | null; -}>; - -export type ReportingPluginRouter = IRouter; - export interface PdfScreenshotOptions extends Omit { urls: UrlOrUrlLocatorTuple[]; } @@ -104,5 +102,3 @@ export interface PdfScreenshotOptions extends Omit { urls: UrlOrUrlLocatorTuple[]; } - -export type { BaseParams, BasePayload }; diff --git a/x-pack/plugins/reporting/server/usage/get_export_stats.test.ts b/x-pack/plugins/reporting/server/usage/get_export_stats.test.ts index 3db82290c4671b..b901b13a98f8b0 100644 --- a/x-pack/plugins/reporting/server/usage/get_export_stats.test.ts +++ b/x-pack/plugins/reporting/server/usage/get_export_stats.test.ts @@ -5,8 +5,9 @@ * 2.0. */ +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { ExportTypesRegistry } from '../lib'; -import { createMockReportingCore, createMockConfigSchema } from '../test_helpers'; +import { createMockReportingCore } from '../test_helpers'; import { getExportStats } from './get_export_stats'; import { getExportTypesHandler } from './get_export_type_handler'; import { ErrorCodeStats, FeatureAvailabilityMap, MetricsStats } from './types'; diff --git a/x-pack/plugins/reporting/server/usage/reporting_usage_collector.test.ts b/x-pack/plugins/reporting/server/usage/reporting_usage_collector.test.ts index 55111f23388774..d7a0492005868c 100644 --- a/x-pack/plugins/reporting/server/usage/reporting_usage_collector.test.ts +++ b/x-pack/plugins/reporting/server/usage/reporting_usage_collector.test.ts @@ -5,20 +5,21 @@ * 2.0. */ -import { loggerMock } from '@kbn/logging-mocks'; import type { ElasticsearchClientMock } from '@kbn/core/server/mocks'; +import { loggerMock } from '@kbn/logging-mocks'; +import { createMockConfigSchema } from '@kbn/reporting-mocks-server'; import { Collector, createCollectorFetchContextMock, usageCollectionPluginMock, } from '@kbn/usage-collection-plugin/server/mocks'; -import { createMockConfigSchema, createMockReportingCore } from '../test_helpers'; import { FeaturesAvailability } from '.'; +import { ExportTypesRegistry } from '../lib'; +import { createMockReportingCore } from '../test_helpers'; import { getReportingUsageCollector, registerReportingUsageCollector, } from './reporting_usage_collector'; -import { ExportTypesRegistry } from '../lib'; const getLicenseMock = (licenseType = 'gold') => diff --git a/x-pack/plugins/reporting/tsconfig.json b/x-pack/plugins/reporting/tsconfig.json index b32aa4772d6183..e29ad2120925fd 100644 --- a/x-pack/plugins/reporting/tsconfig.json +++ b/x-pack/plugins/reporting/tsconfig.json @@ -3,7 +3,7 @@ "compilerOptions": { "outDir": "target/types", }, - "include": ["common/**/*", "public/**/*", "server/**/*", "../../../typings/**/*", "../../../../packages/kbn-reporting/export_types_helpers_browser/report_types.ts", "../../../../packages/kbn-reporting/export_types_helpers_browser/job_types.ts" ], + "include": ["common/**/*", "public/**/*", "server/**/*", "../../../typings/**/*"], "kbn_references": [ "@kbn/core", "@kbn/data-plugin", @@ -38,15 +38,19 @@ "@kbn/generate-csv", "@kbn/reporting-common", "@kbn/saved-search-plugin", - "@kbn/reporting-export-types-csv", "@kbn/core-http-router-server-internal", + "@kbn/reporting-server", + "@kbn/reporting-export-types-csv", "@kbn/reporting-export-types-pdf", - "@kbn/reporting-export-types-deprecated", "@kbn/reporting-export-types-png", + "@kbn/reporting-export-types-pdf-common", + "@kbn/reporting-export-types-csv-common", "@kbn/core-http-common", "@kbn/react-kibana-context-theme", - "@kbn/reporting-export-types-helpers-server", - "@kbn/reporting-export-types-helpers-public", + "@kbn/reporting-export-types-png-common", + "@kbn/reporting-mocks-server", + "@kbn/reporting-config-server", + "@kbn/core-http-request-handler-context-server", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/screenshotting/common/index.ts b/x-pack/plugins/screenshotting/common/index.ts index 3e36d061cba498..cb89ef794eb91e 100644 --- a/x-pack/plugins/screenshotting/common/index.ts +++ b/x-pack/plugins/screenshotting/common/index.ts @@ -5,13 +5,16 @@ * 2.0. */ +import * as errors from './errors'; +export { errors }; + export { SCREENSHOTTING_APP_ID, SCREENSHOTTING_EXPRESSION, SCREENSHOTTING_EXPRESSION_INPUT, } from './expression'; + export type { LayoutParams, LayoutType } from './layout'; -export { errors }; -import * as errors from './errors'; +export type { PerformanceMetrics } from './types'; export const PLUGIN_ID = 'screenshotting'; diff --git a/x-pack/test/reporting_api_integration/reporting_and_security/csv_v2.ts b/x-pack/test/reporting_api_integration/reporting_and_security/csv_v2.ts index 1966ca0645cda7..0d75cb14491924 100644 --- a/x-pack/test/reporting_api_integration/reporting_and_security/csv_v2.ts +++ b/x-pack/test/reporting_api_integration/reporting_and_security/csv_v2.ts @@ -9,7 +9,7 @@ import expect from '@kbn/expect'; import request from 'supertest'; import { DISCOVER_APP_LOCATOR } from '@kbn/discover-plugin/common'; -import type { JobParamsCsvFromSavedObject } from '@kbn/reporting-export-types-helpers-server'; +import type { JobParamsCsvFromSavedObject } from '@kbn/reporting-export-types-csv-common'; import type { ReportApiJSON } from '@kbn/reporting-plugin/common/types'; import rison from '@kbn/rison'; import { FtrProviderContext } from '../ftr_provider_context'; diff --git a/x-pack/test/reporting_api_integration/reporting_and_security/download_csv_dashboard.ts b/x-pack/test/reporting_api_integration/reporting_and_security/download_csv_dashboard.ts index c76b45540efd5b..bd389cd49ea87b 100644 --- a/x-pack/test/reporting_api_integration/reporting_and_security/download_csv_dashboard.ts +++ b/x-pack/test/reporting_api_integration/reporting_and_security/download_csv_dashboard.ts @@ -6,7 +6,7 @@ */ import expect from '@kbn/expect'; -import type { JobParamsDownloadCSV } from '@kbn/reporting-export-types-helpers-server'; +import type { JobParamsDownloadCSV } from '@kbn/reporting-export-types-csv-common'; import supertest from 'supertest'; import { FtrProviderContext } from '../ftr_provider_context'; diff --git a/x-pack/test/reporting_api_integration/services/scenarios.ts b/x-pack/test/reporting_api_integration/services/scenarios.ts index 7ea609890e8b1c..98471d94cc4e66 100644 --- a/x-pack/test/reporting_api_integration/services/scenarios.ts +++ b/x-pack/test/reporting_api_integration/services/scenarios.ts @@ -5,14 +5,11 @@ * 2.0. */ -import type { - JobParamsCSV, - JobParamsDownloadCSV, -} from '@kbn/reporting-export-types-helpers-server'; -import type { JobParamsPDFDeprecated } from '@kbn/reporting-export-types-deprecated'; import { INTERNAL_ROUTES } from '@kbn/reporting-plugin/common/constants/routes'; +import type { JobParamsPDFDeprecated } from '@kbn/reporting-export-types-pdf-common'; +import type { JobParamsPNGV2 } from '@kbn/reporting-export-types-png-common'; +import type { JobParamsCSV, JobParamsDownloadCSV } from '@kbn/reporting-export-types-csv-common'; import rison from '@kbn/rison'; -import { JobParamsPNGV2 } from '@kbn/reporting-export-types-helpers-server'; import { FtrProviderContext } from '../ftr_provider_context'; function removeWhitespace(str: string) { diff --git a/x-pack/test/tsconfig.json b/x-pack/test/tsconfig.json index 0a69ba6e511b80..460b508bde83a6 100644 --- a/x-pack/test/tsconfig.json +++ b/x-pack/test/tsconfig.json @@ -148,5 +148,8 @@ "@kbn/reporting-export-types-deprecated", "@kbn/reporting-export-types-helpers-server", "@kbn/metrics-data-access-plugin", + "@kbn/reporting-export-types-csv-common", + "@kbn/reporting-export-types-pdf-common", + "@kbn/reporting-export-types-png-common", ] } diff --git a/x-pack/test_serverless/api_integration/test_suites/common/reporting/download_csv_dashboard.ts b/x-pack/test_serverless/api_integration/test_suites/common/reporting/download_csv_dashboard.ts index e26ff9d6945b13..b709e3b43bc25e 100644 --- a/x-pack/test_serverless/api_integration/test_suites/common/reporting/download_csv_dashboard.ts +++ b/x-pack/test_serverless/api_integration/test_suites/common/reporting/download_csv_dashboard.ts @@ -8,7 +8,7 @@ import { X_ELASTIC_INTERNAL_ORIGIN_REQUEST } from '@kbn/core-http-common'; import expect from '@kbn/expect'; import { INTERNAL_ROUTES } from '@kbn/reporting-plugin/common/constants'; -import type { JobParamsDownloadCSV } from '@kbn/reporting-export-types-helpers-server'; +import type { JobParamsDownloadCSV } from '@kbn/reporting-export-types-csv-common'; import { FtrProviderContext } from '../../../ftr_provider_context'; const ELASTIC_USERNAME = 'elastic_serverless'; diff --git a/x-pack/test_serverless/functional/test_suites/common/reporting/management.ts b/x-pack/test_serverless/functional/test_suites/common/reporting/management.ts index 1168f932d1f1ab..90be1b602441a7 100644 --- a/x-pack/test_serverless/functional/test_suites/common/reporting/management.ts +++ b/x-pack/test_serverless/functional/test_suites/common/reporting/management.ts @@ -6,8 +6,10 @@ */ import { DISCOVER_APP_LOCATOR } from '@kbn/discover-plugin/common'; -import { CSV_REPORT_TYPE_V2 } from '@kbn/reporting-common'; -import { JobParamsCsvFromSavedObject } from '@kbn/reporting-export-types-helpers-server'; +import { + CSV_REPORT_TYPE_V2, + JobParamsCsvFromSavedObject, +} from '@kbn/reporting-export-types-csv-common'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default ({ getPageObjects, getService }: FtrProviderContext) => { diff --git a/x-pack/test_serverless/tsconfig.json b/x-pack/test_serverless/tsconfig.json index 96197210fe8e5d..454a9d8a98d0dc 100644 --- a/x-pack/test_serverless/tsconfig.json +++ b/x-pack/test_serverless/tsconfig.json @@ -63,6 +63,7 @@ "@kbn/cloud-security-posture-plugin", "@kbn/reporting-plugin", "@kbn/management-settings-ids", + "@kbn/reporting-export-types-csv-common", "@kbn/reporting-common", "@kbn/reporting-export-types-helpers-server", ] diff --git a/yarn.lock b/yarn.lock index 529306f4d64864..2746f23ef4fb21 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4552,10 +4552,6 @@ version "0.0.0" uid "" -"@kbn/generate-csv-types@link:packages/kbn-generate-csv-types": - version "0.0.0" - uid "" - "@kbn/generate-csv@link:packages/kbn-generate-csv": version "0.0.0" uid "" @@ -5248,27 +5244,31 @@ version "0.0.0" uid "" +"@kbn/reporting-config-server@link:packages/kbn-reporting/config_server": + version "0.0.0" + uid "" + "@kbn/reporting-example-plugin@link:x-pack/examples/reporting_example": version "0.0.0" uid "" -"@kbn/reporting-export-types-csv@link:packages/kbn-reporting/export_types/csv": +"@kbn/reporting-export-types-csv-common@link:packages/kbn-reporting/export_types/csv_common": version "0.0.0" uid "" -"@kbn/reporting-export-types-deprecated@link:packages/kbn-reporting/export_types/deprecated": +"@kbn/reporting-export-types-csv@link:packages/kbn-reporting/export_types/csv": version "0.0.0" uid "" -"@kbn/reporting-export-types-helpers-public@link:packages/kbn-reporting/export_types_helpers_public": +"@kbn/reporting-export-types-pdf-common@link:packages/kbn-reporting/export_types/pdf_common": version "0.0.0" uid "" -"@kbn/reporting-export-types-helpers-server@link:packages/kbn-reporting/export_types_helpers_server": +"@kbn/reporting-export-types-pdf@link:packages/kbn-reporting/export_types/pdf": version "0.0.0" uid "" -"@kbn/reporting-export-types-pdf@link:packages/kbn-reporting/export_types/printable_pdf_v2": +"@kbn/reporting-export-types-png-common@link:packages/kbn-reporting/export_types/png_common": version "0.0.0" uid "" @@ -5276,10 +5276,18 @@ version "0.0.0" uid "" +"@kbn/reporting-mocks-server@link:packages/kbn-reporting/mocks_server": + version "0.0.0" + uid "" + "@kbn/reporting-plugin@link:x-pack/plugins/reporting": version "0.0.0" uid "" +"@kbn/reporting-server@link:packages/kbn-reporting/server": + version "0.0.0" + uid "" + "@kbn/resizable-layout-examples-plugin@link:examples/resizable_layout_examples": version "0.0.0" uid ""