UNPKG

@goatlab/typesense

Version:

Modern TypeScript wrapper for Typesense search engine API

46 lines 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.exportDocuments = exportDocuments; exports.exportDocumentsStream = exportDocumentsStream; const export_formatter_1 = require("../../components/export-formatter"); const typesense_model_1 = require("../../typesense.model"); async function exportDocuments(ctx, format = 'jsonl', options) { // Validate format const supportedFormats = ['jsonl', 'json', 'csv']; if (!supportedFormats.includes(format)) { throw new typesense_model_1.TypesenseError(`Unsupported export format: ${format}`, 400); } const collectionName = options?.collection || ctx.fqcn(); const { collection: _, ...exportOptions } = options || {}; const searchParams = { ...exportOptions, // Note: Typesense export always returns JSONL regardless of format param }; // Get response as text (JSONL format) const response = await ctx.httpClient.requestText(`/collections/${collectionName}/documents/export`, { searchParams }); if (format === 'json') { // Parse JSONL to JSON array return response .split('\n') .filter(line => line.trim()) .map(line => JSON.parse(line)); } if (format === 'csv') { // For small datasets, convert JSONL to CSV const documents = response .split('\n') .filter(line => line.trim()) .map(line => JSON.parse(line)); return export_formatter_1.ExportFormatter.formatCSV(documents); } return response; } async function exportDocumentsStream(ctx, options) { const collectionName = options?.collection || ctx.fqcn(); const { collection: _, ...exportOptions } = options || {}; const searchParams = { ...exportOptions, }; return ctx.httpClient.stream(`/collections/${collectionName}/documents/export`, { searchParams }); } //# sourceMappingURL=exportDocuments.js.map