opensearch-project / OpenSearch-Dashboards

📊 Open source visualization dashboards for OpenSearch.
https://opensearch.org/docs/latest/dashboards/index/
Apache License 2.0
1.69k stars 885 forks source link

Fix type errors in Multiple Data Sources #3026

Open tmarkley opened 1 year ago

tmarkley commented 1 year ago

Task for https://github.com/opensearch-project/OpenSearch-Dashboards/issues/1660

PR: https://github.com/opensearch-project/OpenSearch-Dashboards/pull/2334

Code owners and PR reviewers, can you help address this? @kristenTian @AMoo-Miki @zengyan-amazon @zhongnansu @noCharger

$ tsc --noEmit
...

src/plugins/data_source/server/plugin.ts:88:44 - error TS2554: Expected 1 arguments, but got 2.

88         return new LoggingAuditor(request, this.logger.get('audit'));
                                              ~~~~~~~~~~~~~~~~~~~~~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:148:13 - error TS2339: Property 'endpoint' does not exist on type 'unknown'.

148     const { endpoint, auth } = attributes;
                ~~~~~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:148:23 - error TS2339: Property 'auth' does not exist on type 'unknown'.

148     const { endpoint, auth } = attributes;
                          ~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:181:13 - error TS2339: Property 'auth' does not exist on type 'Partial<T>'.

181     const { auth, endpoint } = attributes;
                ~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:181:19 - error TS2339: Property 'endpoint' does not exist on type 'Partial<T>'.

181     const { auth, endpoint } = attributes;
                      ~~~~~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:227:13 - error TS2339: Property 'title' does not exist on type 'unknown'.

227     const { title, endpoint, auth } = attributes;
                ~~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:227:20 - error TS2339: Property 'endpoint' does not exist on type 'unknown'.

227     const { title, endpoint, auth } = attributes;
                       ~~~~~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:227:30 - error TS2339: Property 'auth' does not exist on type 'unknown'.

227     const { title, endpoint, auth } = attributes;
                                 ~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:246:13 - error TS2339: Property 'type' does not exist on type 'unknown'.

246     const { type, credentials } = auth;
                ~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:246:19 - error TS2339: Property 'credentials' does not exist on type 'unknown'.

246     const { type, credentials } = auth;
                      ~~~~~~~~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:308:13 - error TS2339: Property 'endpoint' does not exist on type '{}'.

308     const { endpoint, auth } = attributes;
                ~~~~~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:308:23 - error TS2339: Property 'auth' does not exist on type '{}'.

308     const { endpoint, auth } = attributes;
                          ~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:366:85 - error TS2304: Cannot find name 'type'.

366         throw SavedObjectsErrorHelpers.createBadRequestError(`Invalid auth type: '${type}'`);
                                                                                        ~~~~

src/plugins/data_source/server/saved_objects/data_source_saved_objects_client_wrapper.ts:372:7 - error TS2339: Property 'credentials' does not exist on type 'unknown'.

372       credentials: { username, password },
          ~~~~~~~~~~~

src/plugins/data_source_management/public/components/create_data_source_wizard/components/create_form/create_data_source_form.tsx:59:19 - error TS2612: Property 'context' will overwrite the base property in 'Component<CreateDataSourceProps, CreateDataSourceState, any>'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration.

59   public readonly context!: DataSourceManagementContextValue;
                     ~~~~~~~

src/plugins/data_source_management/public/components/edit_data_source/components/edit_form/edit_data_source_form.tsx:67:19 - error TS2612: Property 'context' will overwrite the base property in 'Component<EditDataSourceProps, EditDataSourceState, any>'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration.

67   public readonly context!: DataSourceManagementContextValue;
                     ~~~~~~~

src/plugins/data_source_management/public/components/edit_data_source/components/edit_form/edit_data_source_form.tsx:234:51 - error TS2554: Expected 1 arguments, but got 2.

234         await this.props.handleSubmit(formValues, false);
                                                      ~~~~~

src/plugins/data_source_management/public/components/edit_data_source/components/edit_form/edit_data_source_form.tsx:283:55 - error TS2554: Expected 1 arguments, but got 2.

283       await this.props.handleSubmit(updateAttributes, true);
                                                          ~~~~

src/plugins/data_source_management/public/plugin.ts:48:39 - error TS2345: Argument of type 'StartServicesAccessor<object, unknown>' is not assignable to parameter of type 'StartServicesAccessor<DataSourceManagementStartDependencies, unknown>'.
  Property 'data' is missing in type '{}' but required in type 'DataSourceManagementStartDependencies'.

48         return mountManagementSection(core.getStartServices, params);
                                         ~~~~~~~~~~~~~~~~~~~~~

  src/plugins/data_source_management/public/management_app/mount_management_section.tsx:23:3
    23   data: DataPublicPluginStart;
         ~~~~
    'data' is declared here.

src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_data_source/components/header/header.tsx:166:15 - error TS2322: Type 'DataSourceTableItem[]' is not assignable to type 'never[]'.
  Type 'DataSourceTableItem' is not assignable to type 'never'.

166               options={dataSources}
                  ~~~~~~~

  node_modules/@elastic/eui/oui.d.ts:29190:6
    29190      options: Array<EuiSelectableOption<T>>;
               ~~~~~~~
    The expected type comes from property 'options' which is declared here on type 'IntrinsicAttributes & (IntrinsicClassAttributes<EuiSelectable<DataSourceTableItem>> & ((Pick<...> & ... 1 more ... & Partial<...>) | (Pick<...> & ... 1 more ... & Partial<...>)))'

src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_index_pattern/step_index_pattern.tsx:117:19 - error TS2612: Property 'context' will overwrite the base property in 'Component<StepIndexPatternProps, StepIndexPatternState, any>'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration.

117   public readonly context!: IndexPatternManagmentContextValue;
                      ~~~~~~~

src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/components/step_time_field/step_time_field.tsx:85:19 - error TS2612: Property 'context' will overwrite the base property in 'Component<StepTimeFieldProps, StepTimeFieldState, any>'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration.

85   public readonly context!: IndexPatternManagmentContextValue;
                     ~~~~~~~

src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/create_index_pattern_wizard.tsx:89:19 - error TS2612: Property 'context' will overwrite the base property in 'Component<RouteComponentProps<{}, StaticContext, unknown>, CreateIndexPatternWizardState, any>'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration.

89   public readonly context!: IndexPatternManagmentContextValue;
                     ~~~~~~~

src/plugins/index_pattern_management/public/components/create_index_pattern_wizard/lib/get_indices.ts:288:7 - error TS2322: Type '{ ignoreUnavailable: true; expand_wildcards: "all" | "open"; index: string; body: { size: number; aggs: { indices: { terms: { field: string; size: number; }; }; }; }; }' is not assignable to type 'ISearchRequestParams<Record<string, any>>'.
  Object literal may only specify known properties, but 'ignoreUnavailable' does not exist in type 'ISearchRequestParams<Record<string, any>>'. Did you mean to write 'ignore_unavailable'?

288       ignoreUnavailable: true,
          ~~~~~~~~~~~~~~~~~~~~~~~

  src/plugins/data/common/search/types.ts:88:3
    88   params?: Params;
         ~~~~~~
    The expected type comes from property 'params' which is declared here on type 'IOpenSearchSearchRequest'

src/plugins/index_pattern_management/public/components/field_editor/components/scripting_help/test_script.tsx:76:19 - error TS2612: Property 'context' will overwrite the base property in 'Component<TestScriptProps, TestScriptState, any>'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration.

76   public readonly context!: IndexPatternManagmentContextValue;
                     ~~~~~~~

src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsx:153:19 - error TS2612: Property 'context' will overwrite the base property in 'PureComponent<FieldEdiorProps, FieldEditorState, any>'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration.

153   public readonly context!: IndexPatternManagmentContextValue;
                      ~~~~~~~

src/plugins/index_pattern_management/public/components/index_pattern_table/empty_state/empty_state.test.tsx:35:33 - error TS2306: File '/workspaces/OpenSearch-Dashboards/node_modules/@elastic/eui/lib/test/index.d.ts' is not a module.

35 import { findTestSubject } from '@elastic/eui/lib/test';
                                   ~~~~~~~~~~~~~~~~~~~~~~~

src/plugins/index_pattern_management/public/components/index_pattern_table/index_pattern_table.tsx:116:10 - error TS6133: 'isColumnDataLoaded' is declared but its value is never read.

116   const [isColumnDataLoaded, setIsColumnDataLoaded] = useState(false);
             ~~~~~~~~~~~~~~~~~~

src/plugins/index_pattern_management/public/components/index_pattern_table/index_pattern_table.tsx:291:11 - error TS2322: Type '({ sortable: boolean; 'data-test-subj': string; description?: string | undefined; children?: ReactNode; name: ReactNode; 'aria-label'?: string | undefined; 'aria-describedby'?: string | undefined; ... 270 more ...; valign?: "baseline" | ... 3 more ... | undefined; } | { ...; })[]' is not assignable to type 'EuiBasicTableColumn<IndexPatternTableItem>[]'.
  Type '{ sortable: boolean; 'data-test-subj': string; description?: string | undefined; children?: ReactNode; name: ReactNode; 'aria-label'?: string | undefined; 'aria-describedby'?: string | undefined; ... 270 more ...; valign?: "baseline" | ... 3 more ... | undefined; } | { ...; }' is not assignable to type 'EuiBasicTableColumn<IndexPatternTableItem>'.
    Type '{ sortable: boolean; 'data-test-subj': string; description?: string | undefined; children?: React.ReactNode; name: React.ReactNode; 'aria-label'?: string | undefined; 'aria-describedby'?: string | undefined; ... 270 more ...; valign?: "baseline" | ... 3 more ... | undefined; }' is not assignable to type 'EuiBasicTableColumn<IndexPatternTableItem>'.
      Type '{ sortable: boolean; 'data-test-subj': string; description?: string | undefined; children?: React.ReactNode; name: React.ReactNode; 'aria-label'?: string | undefined; 'aria-describedby'?: string | undefined; ... 270 more ...; valign?: "baseline" | ... 3 more ... | undefined; }' is not assignable to type 'EuiTableFieldDataColumnType<IndexPatternTableItem>'.
        Types of property 'mobileOptions' are incompatible.
          Type '{ show?: boolean | undefined; only?: boolean | undefined; render?: ((item: IndexPatternTableRecord) => ReactNode) | undefined; header?: boolean | undefined; } | undefined' is not assignable to type '{ show?: boolean | undefined; only?: boolean | undefined; render?: ((item: IndexPatternTableItem) => ReactNode) | undefined; header?: boolean | undefined; } | undefined'.
            Type '{ show?: boolean | undefined; only?: boolean | undefined; render?: ((item: IndexPatternTableRecord) => ReactNode) | undefined; header?: boolean | undefined; }' is not assignable to type '{ show?: boolean | undefined; only?: boolean | undefined; render?: ((item: IndexPatternTableItem) => ReactNode) | undefined; header?: boolean | undefined; }'.
              Types of property 'render' are incompatible.
                Type '((item: IndexPatternTableRecord) => ReactNode) | undefined' is not assignable to type '((item: IndexPatternTableItem) => ReactNode) | undefined'.
                  Type '(item: IndexPatternTableRecord) => ReactNode' is not assignable to type '(item: IndexPatternTableItem) => ReactNode'.
                    Types of parameters 'item' and 'item' are incompatible.
                      Property 'type' is missing in type 'IndexPatternTableItem' but required in type 'IndexPatternTableRecord'.

291           columns={columns}
              ~~~~~~~

  src/plugins/index_pattern_management/public/types.ts:77:3
    77   type: string;
         ~~~~
    'type' is declared here.
  node_modules/@elastic/eui/oui.d.ts:14456:6
    14456      columns: Array<EuiBasicTableColumn<T>>;
               ~~~~~~~
    The expected type comes from property 'columns' which is declared here on type 'IntrinsicAttributes & (IntrinsicClassAttributes<EuiInMemoryTable<IndexPatternTableItem>> & ((Pick<...> & ... 1 more ... & Partial<...>) | (Pick<...> & ... 1 more ... & Partial<...>)))'

src/plugins/index_pattern_management/public/components/test_utils.tsx:46:19 - error TS2322: Type 'Props' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<any, any, any>> & Readonly<any> & Readonly<{ children?: ReactNode; }>'.
  Type 'Props' is not assignable to type 'IntrinsicAttributes'.

46   return shallow(<MyComponent {...props} />, {
                     ~~~~~~~~~~~

  src/plugins/index_pattern_management/public/components/test_utils.tsx:37:44
    37 export function createComponentWithContext<Props = Record<string, any>>(
                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    This type parameter might need an `extends JSX.IntrinsicAttributes` constraint.
  src/plugins/index_pattern_management/public/components/test_utils.tsx:37:44
    37 export function createComponentWithContext<Props = Record<string, any>>(
                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    This type parameter might need an `extends JSX.IntrinsicAttributes & JSX.IntrinsicClassAttributes<React.Component<any, any, any>> & Readonly<any> & Readonly<{ children?: React.ReactNode; }>` constraint.

src/plugins/index_pattern_management/public/mocks.ts:42:64 - error TS2741: Property 'columns' is missing in type '{ creation: any; list: any; fieldFormatEditors: any; environment: { update: jest.Mock<any, any>; }; }' but required in type '{ creation: { addCreationConfig: (Config: typeof IndexPatternCreationConfig) => void; }; list: { addListConfig: (Config: typeof IndexPatternListConfig) => void; }; fieldFormatEditors: { ...; }; environment: { ...; }; columns: IndexPatternTableColumnServiceSetup; }'.

 42 const createSetupContract = (): IndexPatternManagementSetup => ({
                                                                   ~~
 43   creation: {
    ~~~~~~~~~~~~~
... 
 55   },
    ~~~~
 56 });
    ~~

  src/plugins/index_pattern_management/public/service/index_pattern_management_service.ts:104:7
    104       columns: this.columnService.setup(),
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    'columns' is declared here.

src/plugins/index_pattern_management/public/mocks.ts:58:64 - error TS2741: Property 'columns' is missing in type '{ creation: any; list: any; fieldFormatEditors: any; }' but required in type '{ creation: { getType: (key: string | undefined) => IndexPatternCreationConfig; getIndexPatternCreationOptions: (urlHandler: UrlHandler) => Promise<...>; }; list: { ...; }; fieldFormatEditors: { ...; }; columns: IndexPatternTableColumnServiceStart; }'.

 58 const createStartContract = (): IndexPatternManagementStart => ({
                                                                   ~~
 59   creation: {
    ~~~~~~~~~~~~~
... 
 71   } as any,
    ~~~~~~~~~~~
 72 });
    ~~

  src/plugins/index_pattern_management/public/service/index_pattern_management_service.ts:113:7
    113       columns: this.columnService.start(),
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    'columns' is declared here.

src/plugins/index_pattern_management/server/routes/resolve_index.ts:32:19 - error TS6133: 'LegacyAPICaller' is declared but its value is never read.

32 import { IRouter, LegacyAPICaller } from 'src/core/server';
                     ~~~~~~~~~~~~~~~
CMDWillYang commented 1 year ago

@joshuarrrr I'd love to look at this.

bandinib-amzn commented 7 months ago

There is type error that got introduced after new changes.

Property 'setup' in type 'DataSourceManagementPlugin' is not assignable to the same property in base type 'Plugin<DataSourceManagementPluginSetup, DataSourceManagementPluginStart, DataSourceManagementSetupDependencies, object>'. 

@xinruiba Are you going to work on this?

xinruiba commented 7 months ago

There is type error that got introduced after new changes.

Property 'setup' in type 'DataSourceManagementPlugin' is not assignable to the same property in base type 'Plugin<DataSourceManagementPluginSetup, DataSourceManagementPluginStart, DataSourceManagementSetupDependencies, object>'. 

@xinruiba Are you going to work on this?

Yup, happy to work on it.

bandinib-amzn commented 6 months ago

Targeting to fix these type errors in 2.15.

BionIT commented 5 months ago

@bandinib-amzn @xinruiba Do we want to target this for 2.15 or 2.16?

bandinib-amzn commented 5 months ago

@BionIT We won't be targeting this for 2.15.

BionIT commented 5 months ago

Got it, thanks!