@goatlab/typesense
Version:
Modern TypeScript wrapper for Typesense search engine API
46 lines • 1.95 kB
JavaScript
;
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