Files
elasticsearch/ts/QUICK_FIXES.md

2.7 KiB

Quick Fixes Needed for TypeScript Strict Mode

Import Fixes (Use import type for verbatimModuleSyntax)

Files to fix:

  1. ts/core/connection/connection-manager.ts

    // Change:
    import { ElasticsearchConfig } from '../config/types.js';
    import { HealthCheckResult, HealthStatus } from './health-check.js';
    
    // To:
    import type { ElasticsearchConfig } from '../config/types.js';
    import type { HealthCheckResult } from './health-check.js';
    import { HealthStatus } from './health-check.js';
    
  2. ts/core/errors/elasticsearch-error.ts

    // Change:
    import { ErrorCode, ErrorContext } from './types.js';
    
    // To:
    import { ErrorCode } from './types.js';
    import type { ErrorContext } from './types.js';
    
  3. ts/core/errors/retry-policy.ts

    // Change:
    import { RetryConfig, RetryStrategy } from './types.js';
    
    // To:
    import type { RetryConfig, RetryStrategy } from './types.js';
    
  4. ts/domain/documents/document-manager.ts

    // Change:
    import {
      DocumentWithMeta,
      SessionConfig,
      SnapshotProcessor,
      SnapshotMeta,
      IteratorOptions,
    } from './types.js';
    
    // To:
    import type {
      DocumentWithMeta,
      SessionConfig,
      SnapshotProcessor,
      SnapshotMeta,
      IteratorOptions,
    } from './types.js';
    

Tracing undefined issue (ts/core/observability/tracing.ts:315-317)

// In TracingProvider.createSpan(), change:
const span = this.tracer.startSpan(name, {
  ...attributes,
  'service.name': this.config.serviceName,
  ...(this.config.serviceVersion && { 'service.version': this.config.serviceVersion }),
});

// To:
const spanAttributes = {
  ...attributes,
  'service.name': this.config.serviceName || 'elasticsearch-client',
};
if (this.config.serviceVersion) {
  spanAttributes['service.version'] = this.config.serviceVersion;
}
const span = this.tracer.startSpan(name, spanAttributes);

Generic Type Constraints for Elasticsearch Client

In ts/domain/documents/document-manager.ts, add constraint:

// Change class definition:
export class DocumentManager<T = unknown> {

// To:
export class DocumentManager<T extends Record<string, any> = Record<string, any>> {

This ensures T is always an object type compatible with Elasticsearch operations.

Alternative: Relax Strict Mode Temporarily

If immediate fixes are needed, you can temporarily relax some strict checks in tsconfig.json:

{
  "compilerOptions": {
    // Comment out temporarily:
    // "verbatimModuleSyntax": true,
    // "noUncheckedIndexedAccess": true,
  }
}

But the proper fix is to address the imports and type issues as outlined above.