JSPM

vespa-ts

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q25106F
  • License MIT

A reusable TypeScript package for interacting with Vespa search engine with dependency injection support

Package Exports

  • vespa-ts
  • vespa-ts/client
  • vespa-ts/errors
  • vespa-ts/mappers
  • vespa-ts/types
  • vespa-ts/utils

Readme

@xyne/vespa-ts

A reusable TypeScript package for interacting with Vespa search engine with dependency injection support.

Installation

npm install @xyne/vespa-ts

Modular Imports

This package supports modular imports, allowing you to import only the parts you need:

Core Functions (Default Import)

// Import core functionality
import { createVespaService, ConsoleLogger, VespaService } from '@xyne/vespa-ts';
import type { VespaDependencies, ILogger, VespaConfig } from '@xyne/vespa-ts';

Types

// Import types separately
import type { 
  VespaSearchResponse, 
  VespaFileSearch, 
  VespaUser,
  SearchResponse,
  AutocompleteResults,
  Apps,
  Entity
} from '@xyne/vespa-ts/types';

Mappers

// Import transformation functions
import { 
  VespaSearchResponseToSearchResult,
  VespaAutocompleteResponseToResult,
  getSortedScoredChunks,
  handleVespaGroupResponse
} from '@xyne/vespa-ts/mappers';

Utils

// Import utility functions
import { 
  scale, 
  getErrorMessage, 
  escapeYqlValue,
  processGmailIntent,
  dateToUnixTimestamp
} from '@xyne/vespa-ts/utils';

Errors

// Import custom error classes
import { 
  ErrorPerformingSearch,
  ErrorRetrievingDocuments,
  ErrorInsertingDocument,
  ErrorDeletingDocuments
} from '@xyne/vespa-ts/errors';

Client

// Import specific client implementations
import { ProductionVespaClient } from '@xyne/vespa-ts/client';
import vespaClient from '@xyne/vespa-ts/client'; // default client

Usage Example

import { createVespaService, ConsoleLogger } from '@xyne/vespa-ts';
import type { VespaDependencies } from '@xyne/vespa-ts';
import { VespaSearchResponseToSearchResult } from '@xyne/vespa-ts/mappers';
import { scale } from '@xyne/vespa-ts/utils';

// Create a logger
const logger = new ConsoleLogger({ service: 'my-app' });

// Create dependencies
const dependencies: VespaDependencies = {
  logger,
  config: {
    vespaMaxRetryAttempts: 3,
    vespaRetryDelay: 1000,
    vespaBaseHost: "localhost",
    page: 10,
    isDebugMode: false,
    userQueryUpdateInterval: 60 * 1000,
    namespace: "namespace",
    cluster: "my_content",
    productionServerUrl: "",
    apiKey: "",
  },
  sourceSchemas: ['file', 'user', 'mail'],
  vespaEndpoint: 'http://localhost:8080'
};

// Create Vespa service
const vespaService = createVespaService(dependencies);

// Use the service
async function search(query: string) {
  try {
    const results = await vespaService.search(query);
    return VespaSearchResponseToSearchResult(results);
  } catch (error) {
    logger.error('Search failed:', error);
    throw error;
  }
}

Benefits of Modular Imports

  1. Tree Shaking: Only import what you need, reducing bundle size
  2. Better Organization: Separate concerns into logical modules
  3. Type Safety: Import only the types you need
  4. Flexibility: Mix and match imports based on your use case

Available Modules

  • @xyne/vespa-ts - Core functions and main API
  • @xyne/vespa-ts/types - TypeScript type definitions
  • @xyne/vespa-ts/mappers - Data transformation functions
  • @xyne/vespa-ts/utils - Utility functions
  • @xyne/vespa-ts/errors - Custom error classes
  • @xyne/vespa-ts/client - Client implementations

Development

# Install dependencies
npm install

# Build the package
npm run build

# Watch for changes
npm run dev

# Run tests
npm test

License

MIT