A reusable TypeScript package for interacting with Vespa search engine with dependency injection support.
npm install @xyne/vespa-tsThis package supports modular imports, allowing you to import only the parts you need:
// Import core functionality
import { createVespaService, ConsoleLogger, VespaService } from '@xyne/vespa-ts';
import type { VespaDependencies, ILogger, VespaConfig } from '@xyne/vespa-ts';// Import types separately
import type {
VespaSearchResponse,
VespaFileSearch,
VespaUser,
SearchResponse,
AutocompleteResults,
Apps,
Entity
} from '@xyne/vespa-ts/types';// Import transformation functions
import {
VespaSearchResponseToSearchResult,
VespaAutocompleteResponseToResult,
getSortedScoredChunks,
handleVespaGroupResponse
} from '@xyne/vespa-ts/mappers';// Import utility functions
import {
scale,
getErrorMessage,
escapeYqlValue,
processGmailIntent,
dateToUnixTimestamp
} from '@xyne/vespa-ts/utils';// Import custom error classes
import {
ErrorPerformingSearch,
ErrorRetrievingDocuments,
ErrorInsertingDocument,
ErrorDeletingDocuments
} from '@xyne/vespa-ts/errors';import vespaClient from '@xyne/vespa-ts/client'; // default clientimport { 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;
}
}@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
# Install dependencies
npm install
# Build the package
npm run build
# Watch for changes
npm run dev
# Run tests
npm testMIT