@goatlab/typesense 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/TypesenseApi.d.ts +5 -5
- package/dist/TypesenseApi.js +37 -36
- package/dist/TypesenseApi.js.map +1 -1
- package/dist/actions/admin/getCollectionStats.d.ts +1 -1
- package/dist/actions/admin/health.d.ts +1 -1
- package/dist/actions/admin/health.js +1 -1
- package/dist/actions/admin/health.js.map +1 -1
- package/dist/actions/admin/metrics.d.ts +1 -1
- package/dist/actions/admin/metrics.js.map +1 -1
- package/dist/actions/aliases/createOrUpdateAlias.d.ts +1 -1
- package/dist/actions/aliases/deleteAlias.d.ts +1 -1
- package/dist/actions/aliases/getAlias.d.ts +1 -1
- package/dist/actions/aliases/listAliases.d.ts +1 -1
- package/dist/actions/collections/createCollection.d.ts +1 -1
- package/dist/actions/collections/createCollection.js.map +1 -1
- package/dist/actions/collections/deleteCollection.d.ts +1 -1
- package/dist/actions/collections/getCollection.d.ts +1 -1
- package/dist/actions/collections/getOrCreateCollection.d.ts +1 -1
- package/dist/actions/collections/getOrCreateCollection.js +1 -1
- package/dist/actions/collections/getOrCreateCollection.js.map +1 -1
- package/dist/actions/collections/listCollections.d.ts +1 -1
- package/dist/actions/collections/updateCollection.d.ts +1 -1
- package/dist/actions/collections/updateCollection.js.map +1 -1
- package/dist/actions/documents/clearCollection.d.ts +1 -1
- package/dist/actions/documents/deleteByFilter.d.ts +1 -1
- package/dist/actions/documents/deleteDocument.d.ts +1 -1
- package/dist/actions/documents/deleteDocument.js.map +1 -1
- package/dist/actions/documents/exportDocuments.d.ts +3 -3
- package/dist/actions/documents/exportDocuments.js +6 -6
- package/dist/actions/documents/exportDocuments.js.map +1 -1
- package/dist/actions/documents/getDocumentById.d.ts +1 -1
- package/dist/actions/documents/getDocumentById.js.map +1 -1
- package/dist/actions/documents/importDocuments.d.ts +2 -2
- package/dist/actions/documents/importDocuments.js +11 -9
- package/dist/actions/documents/importDocuments.js.map +1 -1
- package/dist/actions/documents/insertDocument.d.ts +1 -1
- package/dist/actions/documents/insertDocument.js.map +1 -1
- package/dist/actions/documents/updateDocument.d.ts +1 -1
- package/dist/actions/documents/updateDocument.js.map +1 -1
- package/dist/actions/documents/upsertDocument.d.ts +1 -1
- package/dist/actions/documents/upsertDocument.js.map +1 -1
- package/dist/actions/overrides/deleteOverride.d.ts +1 -1
- package/dist/actions/overrides/deleteOverride.js.map +1 -1
- package/dist/actions/overrides/getOverride.d.ts +1 -1
- package/dist/actions/overrides/getOverride.js.map +1 -1
- package/dist/actions/overrides/listOverrides.d.ts +1 -1
- package/dist/actions/overrides/listOverrides.js.map +1 -1
- package/dist/actions/overrides/upsertOverride.d.ts +1 -1
- package/dist/actions/overrides/upsertOverride.js.map +1 -1
- package/dist/actions/presets/deletePreset.d.ts +1 -1
- package/dist/actions/presets/getPreset.d.ts +1 -1
- package/dist/actions/presets/listPresets.d.ts +1 -1
- package/dist/actions/presets/listPresets.js.map +1 -1
- package/dist/actions/presets/upsertPreset.d.ts +1 -1
- package/dist/actions/presets/upsertPreset.js.map +1 -1
- package/dist/actions/search/multiSearch.d.ts +1 -1
- package/dist/actions/search/multiSearch.js.map +1 -1
- package/dist/actions/search/search.d.ts +1 -1
- package/dist/actions/synonyms/deleteSynonym.d.ts +1 -1
- package/dist/actions/synonyms/deleteSynonym.js.map +1 -1
- package/dist/actions/synonyms/getSynonym.d.ts +1 -1
- package/dist/actions/synonyms/getSynonym.js.map +1 -1
- package/dist/actions/synonyms/listSynonyms.d.ts +1 -1
- package/dist/actions/synonyms/listSynonyms.js.map +1 -1
- package/dist/actions/synonyms/upsertSynonym.d.ts +1 -1
- package/dist/actions/synonyms/upsertSynonym.js.map +1 -1
- package/dist/components/export-formatter.d.ts +1 -1
- package/dist/components/export-formatter.js +21 -21
- package/dist/components/export-formatter.js.map +1 -1
- package/dist/components/http-client.d.ts +2 -1
- package/dist/components/http-client.js +21 -8
- package/dist/components/http-client.js.map +1 -1
- package/dist/components/resilience-policy.js +7 -7
- package/dist/components/resilience-policy.js.map +1 -1
- package/dist/components/schema-manager.js +36 -14
- package/dist/components/schema-manager.js.map +1 -1
- package/dist/components/typesense.filter-builder.js.map +1 -1
- package/dist/examples/multitenancy-example.js +5 -5
- package/dist/examples/multitenancy-example.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.js +8 -8
- package/dist/index.js.map +1 -1
- package/dist/tests/const.js +7 -7
- package/dist/tests/const.js.map +1 -1
- package/dist/tests/type-inference-example.js +3 -3
- package/dist/tests/type-inference-example.js.map +1 -1
- package/dist/typesense.model.js +19 -11
- package/dist/typesense.model.js.map +1 -1
- package/dist/utils/schema-to-types.js.map +1 -1
- package/dist/utils/schema-typed-api.d.ts +1 -1
- package/dist/utils/schema-typed-api.js.map +1 -1
- package/dist/utils/tenant.js +1 -1
- package/dist/utils/tenant.js.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listOverrides.js","sourceRoot":"","sources":["../../../src/actions/overrides/listOverrides.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"listOverrides.js","sourceRoot":"","sources":["../../../src/actions/overrides/listOverrides.ts"],"names":[],"mappings":";;AAMA,sCASC;AATM,KAAK,UAAU,aAAa,CACjC,GAAqB,EACrB,OAAoC;IAEpC,MAAM,cAAc,GAAG,OAAO,EAAE,UAAU,IAAI,GAAG,CAAC,IAAI,EAAE,CAAA;IAExD,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CAEhC,gBAAgB,cAAc,YAAY,CAAC,CAAA;AAChD,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { TypesenseOverride, TypesenseOverrideResponse, TypesenseCollectionOptions } from '../../typesense.model';
|
|
2
1
|
import type { TypesenseContext } from '../../types';
|
|
2
|
+
import type { TypesenseCollectionOptions, TypesenseOverride, TypesenseOverrideResponse } from '../../typesense.model';
|
|
3
3
|
export declare function upsertOverride(ctx: TypesenseContext, override: TypesenseOverride, options?: TypesenseCollectionOptions): Promise<TypesenseOverrideResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsertOverride.js","sourceRoot":"","sources":["../../../src/actions/overrides/upsertOverride.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"upsertOverride.js","sourceRoot":"","sources":["../../../src/actions/overrides/upsertOverride.ts"],"names":[],"mappings":";;AAOA,wCAcC;AAdM,KAAK,UAAU,cAAc,CAClC,GAAqB,EACrB,QAA2B,EAC3B,OAAoC;IAEpC,MAAM,cAAc,GAAG,OAAO,EAAE,UAAU,IAAI,GAAG,CAAC,IAAI,EAAE,CAAA;IAExD,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CACjC,gBAAgB,cAAc,cAAc,QAAQ,CAAC,EAAE,EAAE,EACzD;QACE,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;KACf,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { TypesensePresetResponse } from '../../typesense.model';
|
|
2
1
|
import type { TypesenseContext } from '../../types';
|
|
2
|
+
import type { TypesensePresetResponse } from '../../typesense.model';
|
|
3
3
|
export declare function deletePreset(ctx: TypesenseContext, presetName: string): Promise<TypesensePresetResponse>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { TypesensePresetResponse } from '../../typesense.model';
|
|
2
1
|
import type { TypesenseContext } from '../../types';
|
|
2
|
+
import type { TypesensePresetResponse } from '../../typesense.model';
|
|
3
3
|
export declare function getPreset(ctx: TypesenseContext, presetName: string): Promise<TypesensePresetResponse>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TypesensePresetResponse } from '../../typesense.model';
|
|
2
1
|
import type { TypesenseContext } from '../../types';
|
|
2
|
+
import type { TypesensePresetResponse } from '../../typesense.model';
|
|
3
3
|
export declare function listPresets(ctx: TypesenseContext): Promise<{
|
|
4
4
|
presets: TypesensePresetResponse[];
|
|
5
5
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listPresets.js","sourceRoot":"","sources":["../../../src/actions/presets/listPresets.ts"],"names":[],"mappings":";;AAGA,kCAwBC;AAxBM,KAAK,UAAU,WAAW,CAC/B,GAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"listPresets.js","sourceRoot":"","sources":["../../../src/actions/presets/listPresets.ts"],"names":[],"mappings":";;AAGA,kCAwBC;AAxBM,KAAK,UAAU,WAAW,CAC/B,GAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CAE1C,UAAU,CAAC,CAAA;IAEd,8CAA8C;IAC9C,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAA;QACxC,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CACvD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CACrC,CAAA;QAED,yDAAyD;QACzD,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACpD,GAAG,MAAM;YACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC;SACjD,CAAC,CAAC,CAAA;QAEH,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,CAAA;IACpC,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { TypesensePreset, TypesensePresetResponse } from '../../typesense.model';
|
|
2
1
|
import type { TypesenseContext } from '../../types';
|
|
2
|
+
import type { TypesensePreset, TypesensePresetResponse } from '../../typesense.model';
|
|
3
3
|
export declare function upsertPreset(ctx: TypesenseContext, preset: TypesensePreset): Promise<TypesensePresetResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsertPreset.js","sourceRoot":"","sources":["../../../src/actions/presets/upsertPreset.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"upsertPreset.js","sourceRoot":"","sources":["../../../src/actions/presets/upsertPreset.ts"],"names":[],"mappings":";;AAOA,oCAeC;AAjBD,+CAA8D;AAEvD,KAAK,UAAU,YAAY,CAChC,GAAqB,EACrB,MAAuB;IAEvB,qCAAqC;IACrC,MAAM,aAAa,GAAG,IAAA,kCAAyB,EAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IAC1E,MAAM,eAAe,GAAG,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,CAAA;IAE1D,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CACjC,YAAY,aAAa,EAAE,EAC3B;QACE,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,eAAe;KACtB,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { TypesenseMultiSearchRequest, TypesenseMultiSearchResult } from '../../typesense.model';
|
|
2
1
|
import type { TypesenseContext } from '../../types';
|
|
2
|
+
import type { TypesenseMultiSearchRequest, TypesenseMultiSearchResult } from '../../typesense.model';
|
|
3
3
|
export declare function multiSearch<T extends Record<string, any> = Record<string, any>>(ctx: TypesenseContext, request: TypesenseMultiSearchRequest): Promise<TypesenseMultiSearchResult<T>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multiSearch.js","sourceRoot":"","sources":["../../../src/actions/search/multiSearch.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"multiSearch.js","sourceRoot":"","sources":["../../../src/actions/search/multiSearch.ts"],"names":[],"mappings":";;AAMA,kCAaC;AAbM,KAAK,UAAU,WAAW,CAG/B,GAAqB,EACrB,OAAoC;IAEpC,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CACjC,eAAe,EACf;QACE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,OAAO;KACd,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TypesenseQuery, TypesenseQueryResults, TypesenseCollectionOptions, TypesenseTextQuery, TypesenseVectorQuery } from '../../typesense.model';
|
|
2
1
|
import type { TypesenseContext } from '../../types';
|
|
2
|
+
import type { TypesenseCollectionOptions, TypesenseQuery, TypesenseQueryResults, TypesenseTextQuery, TypesenseVectorQuery } from '../../typesense.model';
|
|
3
3
|
export declare function search<T extends Record<string, any>>(ctx: TypesenseContext, query: TypesenseQuery, options?: TypesenseCollectionOptions): Promise<TypesenseQueryResults<T>>;
|
|
4
4
|
export declare function searchVector<T extends Record<string, any>>(ctx: TypesenseContext, query: TypesenseVectorQuery, options?: TypesenseCollectionOptions): Promise<TypesenseQueryResults<T>>;
|
|
5
5
|
export declare function searchText<T extends Record<string, any>>(ctx: TypesenseContext, query: TypesenseTextQuery, options?: TypesenseCollectionOptions): Promise<TypesenseQueryResults<T>>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { TypesenseSynonymResponse, TypesenseCollectionOptions } from '../../typesense.model';
|
|
2
1
|
import type { TypesenseContext } from '../../types';
|
|
2
|
+
import type { TypesenseCollectionOptions, TypesenseSynonymResponse } from '../../typesense.model';
|
|
3
3
|
export declare function deleteSynonym(ctx: TypesenseContext, synonymId: string, options?: TypesenseCollectionOptions): Promise<TypesenseSynonymResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteSynonym.js","sourceRoot":"","sources":["../../../src/actions/synonyms/deleteSynonym.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"deleteSynonym.js","sourceRoot":"","sources":["../../../src/actions/synonyms/deleteSynonym.ts"],"names":[],"mappings":";;AAMA,sCAWC;AAXM,KAAK,UAAU,aAAa,CACjC,GAAqB,EACrB,SAAiB,EACjB,OAAoC;IAEpC,MAAM,cAAc,GAAG,OAAO,EAAE,UAAU,IAAI,GAAG,CAAC,IAAI,EAAE,CAAA;IAExD,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CACjC,gBAAgB,cAAc,aAAa,SAAS,EAAE,EACtD,EAAE,MAAM,EAAE,QAAQ,EAAE,CACrB,CAAA;AACH,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { TypesenseSynonymResponse, TypesenseCollectionOptions } from '../../typesense.model';
|
|
2
1
|
import type { TypesenseContext } from '../../types';
|
|
2
|
+
import type { TypesenseCollectionOptions, TypesenseSynonymResponse } from '../../typesense.model';
|
|
3
3
|
export declare function getSynonym(ctx: TypesenseContext, synonymId: string, options?: TypesenseCollectionOptions): Promise<TypesenseSynonymResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getSynonym.js","sourceRoot":"","sources":["../../../src/actions/synonyms/getSynonym.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"getSynonym.js","sourceRoot":"","sources":["../../../src/actions/synonyms/getSynonym.ts"],"names":[],"mappings":";;AAMA,gCAUC;AAVM,KAAK,UAAU,UAAU,CAC9B,GAAqB,EACrB,SAAiB,EACjB,OAAoC;IAEpC,MAAM,cAAc,GAAG,OAAO,EAAE,UAAU,IAAI,GAAG,CAAC,IAAI,EAAE,CAAA;IAExD,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CACjC,gBAAgB,cAAc,aAAa,SAAS,EAAE,CACvD,CAAA;AACH,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TypesenseSynonymResponse, TypesenseCollectionOptions } from '../../typesense.model';
|
|
2
1
|
import type { TypesenseContext } from '../../types';
|
|
2
|
+
import type { TypesenseCollectionOptions, TypesenseSynonymResponse } from '../../typesense.model';
|
|
3
3
|
export declare function listSynonyms(ctx: TypesenseContext, options?: TypesenseCollectionOptions): Promise<{
|
|
4
4
|
synonyms: TypesenseSynonymResponse[];
|
|
5
5
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listSynonyms.js","sourceRoot":"","sources":["../../../src/actions/synonyms/listSynonyms.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"listSynonyms.js","sourceRoot":"","sources":["../../../src/actions/synonyms/listSynonyms.ts"],"names":[],"mappings":";;AAMA,oCASC;AATM,KAAK,UAAU,YAAY,CAChC,GAAqB,EACrB,OAAoC;IAEpC,MAAM,cAAc,GAAG,OAAO,EAAE,UAAU,IAAI,GAAG,CAAC,IAAI,EAAE,CAAA;IAExD,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CACjC,gBAAgB,cAAc,WAAW,CAC1C,CAAA;AACH,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { TypesenseSynonym, TypesenseSynonymResponse, TypesenseCollectionOptions } from '../../typesense.model';
|
|
2
1
|
import type { TypesenseContext } from '../../types';
|
|
2
|
+
import type { TypesenseCollectionOptions, TypesenseSynonym, TypesenseSynonymResponse } from '../../typesense.model';
|
|
3
3
|
export declare function upsertSynonym(ctx: TypesenseContext, synonym: TypesenseSynonym, options?: TypesenseCollectionOptions): Promise<TypesenseSynonymResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsertSynonym.js","sourceRoot":"","sources":["../../../src/actions/synonyms/upsertSynonym.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"upsertSynonym.js","sourceRoot":"","sources":["../../../src/actions/synonyms/upsertSynonym.ts"],"names":[],"mappings":";;AAOA,sCAcC;AAdM,KAAK,UAAU,aAAa,CACjC,GAAqB,EACrB,OAAyB,EACzB,OAAoC;IAEpC,MAAM,cAAc,GAAG,OAAO,EAAE,UAAU,IAAI,GAAG,CAAC,IAAI,EAAE,CAAA;IAExD,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CACjC,gBAAgB,cAAc,aAAa,OAAO,CAAC,EAAE,EAAE,EACvD;QACE,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,OAAO;KACd,CACF,CAAA;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Readable, Transform } from 'node:stream';
|
|
2
2
|
import { TypesenseDocument, TypesenseExportFormat } from '../typesense.model';
|
|
3
3
|
export declare class ExportFormatter {
|
|
4
4
|
static formatDocuments<T>(documents: TypesenseDocument<T>[], format: TypesenseExportFormat): string | TypesenseDocument<T>[];
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ExportFormatter = void 0;
|
|
4
4
|
// ExportFormatter - Handles CSV/gzip helpers with streaming support
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const node_stream_1 = require("node:stream");
|
|
6
|
+
const node_zlib_1 = require("node:zlib");
|
|
7
7
|
class ExportFormatter {
|
|
8
8
|
static formatDocuments(documents, format) {
|
|
9
9
|
switch (format) {
|
|
@@ -12,7 +12,7 @@ class ExportFormatter {
|
|
|
12
12
|
case 'jsonl':
|
|
13
13
|
return documents.map(doc => JSON.stringify(doc)).join('\n');
|
|
14
14
|
case 'csv':
|
|
15
|
-
return
|
|
15
|
+
return ExportFormatter.formatCSV(documents);
|
|
16
16
|
default:
|
|
17
17
|
throw new Error(`Unsupported export format: ${format}`);
|
|
18
18
|
}
|
|
@@ -31,7 +31,7 @@ class ExportFormatter {
|
|
|
31
31
|
for (const doc of documents) {
|
|
32
32
|
const row = headers.map(header => {
|
|
33
33
|
const value = doc[header];
|
|
34
|
-
return
|
|
34
|
+
return ExportFormatter.escapeCsvValue(value);
|
|
35
35
|
});
|
|
36
36
|
csvLines.push(row.join(','));
|
|
37
37
|
}
|
|
@@ -40,14 +40,14 @@ class ExportFormatter {
|
|
|
40
40
|
static createStreamingCSVTransform() {
|
|
41
41
|
let isFirstRow = true;
|
|
42
42
|
let headers = [];
|
|
43
|
-
return new
|
|
43
|
+
return new node_stream_1.Transform({
|
|
44
44
|
objectMode: true,
|
|
45
|
-
transform(chunk,
|
|
45
|
+
transform(chunk, _encoding, callback) {
|
|
46
46
|
try {
|
|
47
47
|
if (isFirstRow) {
|
|
48
48
|
// Extract headers from first document
|
|
49
49
|
headers = Object.keys(chunk).sort();
|
|
50
|
-
this.push(headers.join(',')
|
|
50
|
+
this.push(`${headers.join(',')}\n`);
|
|
51
51
|
isFirstRow = false;
|
|
52
52
|
}
|
|
53
53
|
// Convert document to CSV row
|
|
@@ -55,7 +55,7 @@ class ExportFormatter {
|
|
|
55
55
|
const value = chunk[header];
|
|
56
56
|
return ExportFormatter.escapeCsvValue(value);
|
|
57
57
|
});
|
|
58
|
-
this.push(row.join(',')
|
|
58
|
+
this.push(`${row.join(',')}\n`);
|
|
59
59
|
callback();
|
|
60
60
|
}
|
|
61
61
|
catch (error) {
|
|
@@ -65,11 +65,11 @@ class ExportFormatter {
|
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
67
|
static createStreamingJSONLTransform() {
|
|
68
|
-
return new
|
|
68
|
+
return new node_stream_1.Transform({
|
|
69
69
|
objectMode: true,
|
|
70
|
-
transform(chunk,
|
|
70
|
+
transform(chunk, _encoding, callback) {
|
|
71
71
|
try {
|
|
72
|
-
this.push(JSON.stringify(chunk)
|
|
72
|
+
this.push(`${JSON.stringify(chunk)}\n`);
|
|
73
73
|
callback();
|
|
74
74
|
}
|
|
75
75
|
catch (error) {
|
|
@@ -79,23 +79,23 @@ class ExportFormatter {
|
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
81
|
static createGzipStream() {
|
|
82
|
-
return (0,
|
|
82
|
+
return (0, node_zlib_1.createGzip)();
|
|
83
83
|
}
|
|
84
84
|
static createDocumentParser(format) {
|
|
85
85
|
switch (format) {
|
|
86
86
|
case 'jsonl':
|
|
87
|
-
return
|
|
87
|
+
return ExportFormatter.createJSONLParser();
|
|
88
88
|
case 'json':
|
|
89
|
-
return
|
|
89
|
+
return ExportFormatter.createJSONParser();
|
|
90
90
|
default:
|
|
91
91
|
throw new Error(`Parsing not supported for format: ${format}`);
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
static createJSONLParser() {
|
|
95
95
|
let buffer = '';
|
|
96
|
-
return new
|
|
96
|
+
return new node_stream_1.Transform({
|
|
97
97
|
objectMode: true,
|
|
98
|
-
transform(chunk,
|
|
98
|
+
transform(chunk, _encoding, callback) {
|
|
99
99
|
buffer += chunk.toString();
|
|
100
100
|
const lines = buffer.split('\n');
|
|
101
101
|
// Keep the last incomplete line in buffer
|
|
@@ -106,7 +106,7 @@ class ExportFormatter {
|
|
|
106
106
|
const document = JSON.parse(line);
|
|
107
107
|
this.push(document);
|
|
108
108
|
}
|
|
109
|
-
catch (
|
|
109
|
+
catch (_error) {
|
|
110
110
|
return callback(new Error(`Invalid JSON in line: ${line}`));
|
|
111
111
|
}
|
|
112
112
|
}
|
|
@@ -119,7 +119,7 @@ class ExportFormatter {
|
|
|
119
119
|
const document = JSON.parse(buffer);
|
|
120
120
|
this.push(document);
|
|
121
121
|
}
|
|
122
|
-
catch (
|
|
122
|
+
catch (_error) {
|
|
123
123
|
return callback(new Error(`Invalid JSON in final line: ${buffer}`));
|
|
124
124
|
}
|
|
125
125
|
}
|
|
@@ -129,9 +129,9 @@ class ExportFormatter {
|
|
|
129
129
|
}
|
|
130
130
|
static createJSONParser() {
|
|
131
131
|
let buffer = '';
|
|
132
|
-
return new
|
|
132
|
+
return new node_stream_1.Transform({
|
|
133
133
|
objectMode: true,
|
|
134
|
-
transform(chunk,
|
|
134
|
+
transform(chunk, _encoding, callback) {
|
|
135
135
|
buffer += chunk.toString();
|
|
136
136
|
callback();
|
|
137
137
|
},
|
|
@@ -209,7 +209,7 @@ class ExportFormatter {
|
|
|
209
209
|
}
|
|
210
210
|
static createDocumentStream(documents) {
|
|
211
211
|
let index = 0;
|
|
212
|
-
return new
|
|
212
|
+
return new node_stream_1.Readable({
|
|
213
213
|
objectMode: true,
|
|
214
214
|
read() {
|
|
215
215
|
if (index < documents.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-formatter.js","sourceRoot":"","sources":["../../src/components/export-formatter.ts"],"names":[],"mappings":";;;AAAA,oEAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"export-formatter.js","sourceRoot":"","sources":["../../src/components/export-formatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export interface HttpClientOptions {
|
|
|
5
5
|
searchTimeout?: number;
|
|
6
6
|
importTimeout?: number;
|
|
7
7
|
defaultTimeout?: number;
|
|
8
|
-
beforeRequest?: Array<(request: Request) =>
|
|
8
|
+
beforeRequest?: Array<(request: Request) => Request | Response | undefined | Promise<Request | Response | undefined>>;
|
|
9
9
|
afterResponse?: any[];
|
|
10
10
|
beforeError?: Array<(error: any) => any | Promise<any>>;
|
|
11
11
|
kyInstance?: KyInstance;
|
|
@@ -16,6 +16,7 @@ export declare class TypesenseHttpClient {
|
|
|
16
16
|
private readonly enforceTLS;
|
|
17
17
|
private readonly options;
|
|
18
18
|
constructor(options: HttpClientOptions);
|
|
19
|
+
get importTimeout(): number | undefined;
|
|
19
20
|
private createDefaultClient;
|
|
20
21
|
private sanitizeHeaders;
|
|
21
22
|
request<T>(endpoint: string, options?: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// TypesenseHttpClient - Handles network wrapper concerns
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
4
|
exports.TypesenseHttpClient = void 0;
|
|
4
|
-
// TypesenseHttpClient - Handles network wrapper concerns
|
|
5
5
|
const js_utils_1 = require("@goatlab/js-utils");
|
|
6
6
|
const typesense_model_1 = require("../typesense.model");
|
|
7
7
|
class TypesenseHttpClient {
|
|
@@ -9,7 +9,8 @@ class TypesenseHttpClient {
|
|
|
9
9
|
enforceTLS;
|
|
10
10
|
options;
|
|
11
11
|
constructor(options) {
|
|
12
|
-
this.enforceTLS =
|
|
12
|
+
this.enforceTLS =
|
|
13
|
+
options.enforceTLS ?? process.env.NODE_ENV === 'production';
|
|
13
14
|
this.options = options;
|
|
14
15
|
// Security: Enforce HTTPS in production
|
|
15
16
|
if (this.enforceTLS && !options.prefixUrl.startsWith('https://')) {
|
|
@@ -17,6 +18,9 @@ class TypesenseHttpClient {
|
|
|
17
18
|
}
|
|
18
19
|
this.kyInstance = options.kyInstance || this.createDefaultClient(options);
|
|
19
20
|
}
|
|
21
|
+
get importTimeout() {
|
|
22
|
+
return this.options.importTimeout;
|
|
23
|
+
}
|
|
20
24
|
createDefaultClient(options) {
|
|
21
25
|
return js_utils_1.Http.getClient({
|
|
22
26
|
prefixUrl: options.prefixUrl,
|
|
@@ -39,7 +43,7 @@ class TypesenseHttpClient {
|
|
|
39
43
|
const sanitizedHeaders = this.sanitizeHeaders(error.request.headers);
|
|
40
44
|
throw new typesense_model_1.TypesenseError(errorBody.message || error.message, response.status, errorBody, sanitizedHeaders);
|
|
41
45
|
}
|
|
42
|
-
catch (
|
|
46
|
+
catch (_parseError) {
|
|
43
47
|
// If we can't parse the response, fall back to basic error
|
|
44
48
|
throw new typesense_model_1.TypesenseError(error.message, response.status, null, this.sanitizeHeaders(error.request.headers));
|
|
45
49
|
}
|
|
@@ -54,7 +58,8 @@ class TypesenseHttpClient {
|
|
|
54
58
|
const sanitized = {};
|
|
55
59
|
headers.forEach((value, key) => {
|
|
56
60
|
// Security: Redact sensitive headers
|
|
57
|
-
if (key.toLowerCase().includes('api-key') ||
|
|
61
|
+
if (key.toLowerCase().includes('api-key') ||
|
|
62
|
+
key.toLowerCase().includes('authorization')) {
|
|
58
63
|
sanitized[key] = '[REDACTED]';
|
|
59
64
|
}
|
|
60
65
|
else {
|
|
@@ -66,7 +71,9 @@ class TypesenseHttpClient {
|
|
|
66
71
|
async request(endpoint, options = {}) {
|
|
67
72
|
const { method = 'GET', body, searchParams, timeout, signal } = options;
|
|
68
73
|
// Remove leading slash for prefixUrl compatibility
|
|
69
|
-
const cleanEndpoint = endpoint.startsWith('/')
|
|
74
|
+
const cleanEndpoint = endpoint.startsWith('/')
|
|
75
|
+
? endpoint.slice(1)
|
|
76
|
+
: endpoint;
|
|
70
77
|
const requestOptions = {
|
|
71
78
|
method,
|
|
72
79
|
timeout: timeout || 10000,
|
|
@@ -84,7 +91,9 @@ class TypesenseHttpClient {
|
|
|
84
91
|
async requestText(endpoint, options = {}) {
|
|
85
92
|
const { method = 'GET', body, searchParams, timeout, signal } = options;
|
|
86
93
|
// Remove leading slash for prefixUrl compatibility
|
|
87
|
-
const cleanEndpoint = endpoint.startsWith('/')
|
|
94
|
+
const cleanEndpoint = endpoint.startsWith('/')
|
|
95
|
+
? endpoint.slice(1)
|
|
96
|
+
: endpoint;
|
|
88
97
|
const requestOptions = {
|
|
89
98
|
method,
|
|
90
99
|
timeout: timeout || 10000,
|
|
@@ -102,7 +111,9 @@ class TypesenseHttpClient {
|
|
|
102
111
|
async requestTextWithRawBody(endpoint, options = {}) {
|
|
103
112
|
const { method = 'GET', body, searchParams, timeout, signal } = options;
|
|
104
113
|
// Remove leading slash for prefixUrl compatibility
|
|
105
|
-
const cleanEndpoint = endpoint.startsWith('/')
|
|
114
|
+
const cleanEndpoint = endpoint.startsWith('/')
|
|
115
|
+
? endpoint.slice(1)
|
|
116
|
+
: endpoint;
|
|
106
117
|
const requestOptions = {
|
|
107
118
|
method,
|
|
108
119
|
timeout: timeout || 10000,
|
|
@@ -121,7 +132,9 @@ class TypesenseHttpClient {
|
|
|
121
132
|
async stream(endpoint, options = {}) {
|
|
122
133
|
const { method = 'GET', body, searchParams, signal } = options;
|
|
123
134
|
// Remove leading slash for prefixUrl compatibility
|
|
124
|
-
const cleanEndpoint = endpoint.startsWith('/')
|
|
135
|
+
const cleanEndpoint = endpoint.startsWith('/')
|
|
136
|
+
? endpoint.slice(1)
|
|
137
|
+
: endpoint;
|
|
125
138
|
const requestOptions = {
|
|
126
139
|
method,
|
|
127
140
|
signal
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/components/http-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/components/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,7 +54,7 @@ class ResiliencePolicy {
|
|
|
54
54
|
getRetryDelay(retryCount) {
|
|
55
55
|
// Exponential backoff with jitter
|
|
56
56
|
const baseDelay = this.options.retryDelay || 1000;
|
|
57
|
-
const exponentialDelay = baseDelay *
|
|
57
|
+
const exponentialDelay = baseDelay * 2 ** retryCount;
|
|
58
58
|
const jitter = Math.random() * 0.1 * exponentialDelay;
|
|
59
59
|
return exponentialDelay + jitter;
|
|
60
60
|
}
|
|
@@ -86,14 +86,14 @@ class ResiliencePolicy {
|
|
|
86
86
|
const resetMs = headers.get('X-RateLimit-ResetMs'); // Typesense uses milliseconds
|
|
87
87
|
const retryAfter = headers.get('Retry-After');
|
|
88
88
|
this.rateLimitInfo = {
|
|
89
|
-
limit: limit ? parseInt(limit, 10) : undefined,
|
|
90
|
-
remaining: remaining ? parseInt(remaining, 10) : undefined,
|
|
91
|
-
resetMs: resetMs ? parseInt(resetMs, 10) : undefined,
|
|
92
|
-
retryAfter: retryAfter ? parseInt(retryAfter, 10) : undefined
|
|
89
|
+
limit: limit ? Number.parseInt(limit, 10) : undefined,
|
|
90
|
+
remaining: remaining ? Number.parseInt(remaining, 10) : undefined,
|
|
91
|
+
resetMs: resetMs ? Number.parseInt(resetMs, 10) : undefined,
|
|
92
|
+
retryAfter: retryAfter ? Number.parseInt(retryAfter, 10) : undefined
|
|
93
93
|
};
|
|
94
94
|
// Set retry-after period if present
|
|
95
95
|
if (retryAfter) {
|
|
96
|
-
this.retryAfterUntil = Date.now() +
|
|
96
|
+
this.retryAfterUntil = Date.now() + Number.parseInt(retryAfter, 10) * 1000;
|
|
97
97
|
}
|
|
98
98
|
// Notify about rate limit updates
|
|
99
99
|
if (this.rateLimitInfo && this.options.onRateLimitUpdate) {
|
|
@@ -114,7 +114,7 @@ class ResiliencePolicy {
|
|
|
114
114
|
if (!this.rateLimitInfo) {
|
|
115
115
|
return false;
|
|
116
116
|
}
|
|
117
|
-
return this.rateLimitInfo.remaining === 0 || this.retryAfterUntil > Date.now();
|
|
117
|
+
return (this.rateLimitInfo.remaining === 0 || this.retryAfterUntil > Date.now());
|
|
118
118
|
}
|
|
119
119
|
reset() {
|
|
120
120
|
this.failures = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resilience-policy.js","sourceRoot":"","sources":["../../src/components/resilience-policy.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"resilience-policy.js","sourceRoot":"","sources":["../../src/components/resilience-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,7 @@ class CollectionSchemaManager {
|
|
|
53
53
|
};
|
|
54
54
|
this.schemaCache = new LRUCache(this.options.cacheSize);
|
|
55
55
|
}
|
|
56
|
-
isVersionSupported(
|
|
56
|
+
isVersionSupported(_feature, minVersion) {
|
|
57
57
|
const currentVersion = this.options.typesenseVersion;
|
|
58
58
|
return this.compareVersions(currentVersion, minVersion) >= 0;
|
|
59
59
|
}
|
|
@@ -63,10 +63,12 @@ class CollectionSchemaManager {
|
|
|
63
63
|
for (let i = 0; i < Math.max(v1Parts.length, v2Parts.length); i++) {
|
|
64
64
|
const v1Part = v1Parts[i] || 0;
|
|
65
65
|
const v2Part = v2Parts[i] || 0;
|
|
66
|
-
if (v1Part > v2Part)
|
|
66
|
+
if (v1Part > v2Part) {
|
|
67
67
|
return 1;
|
|
68
|
-
|
|
68
|
+
}
|
|
69
|
+
if (v1Part < v2Part) {
|
|
69
70
|
return -1;
|
|
71
|
+
}
|
|
70
72
|
}
|
|
71
73
|
return 0;
|
|
72
74
|
}
|
|
@@ -95,9 +97,10 @@ class CollectionSchemaManager {
|
|
|
95
97
|
inferSchemaFromDocument(document, collectionName) {
|
|
96
98
|
const fields = [];
|
|
97
99
|
const processedFields = new Set();
|
|
98
|
-
const inferFieldType = (key, value,
|
|
99
|
-
if (processedFields.has(key))
|
|
100
|
+
const inferFieldType = (key, value, _path = []) => {
|
|
101
|
+
if (processedFields.has(key)) {
|
|
100
102
|
return;
|
|
103
|
+
}
|
|
101
104
|
const field = { name: key };
|
|
102
105
|
if (value === null || value === undefined) {
|
|
103
106
|
field.type = 'string';
|
|
@@ -122,15 +125,18 @@ class CollectionSchemaManager {
|
|
|
122
125
|
const types = new Set();
|
|
123
126
|
for (let i = 0; i < sampleSize; i++) {
|
|
124
127
|
const item = value[i];
|
|
125
|
-
if (typeof item === 'string')
|
|
128
|
+
if (typeof item === 'string') {
|
|
126
129
|
types.add('string');
|
|
130
|
+
}
|
|
127
131
|
else if (typeof item === 'number') {
|
|
128
132
|
types.add(Number.isInteger(item) ? 'int64' : 'float');
|
|
129
133
|
}
|
|
130
|
-
else if (typeof item === 'boolean')
|
|
134
|
+
else if (typeof item === 'boolean') {
|
|
131
135
|
types.add('bool');
|
|
132
|
-
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
133
138
|
types.add('object');
|
|
139
|
+
}
|
|
134
140
|
}
|
|
135
141
|
if (types.size === 1) {
|
|
136
142
|
const type = Array.from(types)[0];
|
|
@@ -144,7 +150,8 @@ class CollectionSchemaManager {
|
|
|
144
150
|
}
|
|
145
151
|
else if (typeof value === 'object') {
|
|
146
152
|
// Check if nested fields are supported
|
|
147
|
-
if (this.isVersionSupported('nested_fields', '0.25.0') &&
|
|
153
|
+
if (this.isVersionSupported('nested_fields', '0.25.0') &&
|
|
154
|
+
this.options.enableNestedFields) {
|
|
148
155
|
field.type = 'object';
|
|
149
156
|
// Could recursively process nested fields here
|
|
150
157
|
}
|
|
@@ -171,7 +178,8 @@ class CollectionSchemaManager {
|
|
|
171
178
|
fields
|
|
172
179
|
};
|
|
173
180
|
// Add version-gated features
|
|
174
|
-
if (this.isVersionSupported('nested_fields', '0.25.0') &&
|
|
181
|
+
if (this.isVersionSupported('nested_fields', '0.25.0') &&
|
|
182
|
+
this.options.enableNestedFields) {
|
|
175
183
|
collection.enable_nested_fields = true;
|
|
176
184
|
}
|
|
177
185
|
return collection;
|
|
@@ -190,9 +198,22 @@ class CollectionSchemaManager {
|
|
|
190
198
|
}
|
|
191
199
|
// Validate field types
|
|
192
200
|
const validTypes = [
|
|
193
|
-
'string',
|
|
194
|
-
'
|
|
195
|
-
'
|
|
201
|
+
'string',
|
|
202
|
+
'string[]',
|
|
203
|
+
'int32',
|
|
204
|
+
'int32[]',
|
|
205
|
+
'int64',
|
|
206
|
+
'int64[]',
|
|
207
|
+
'float',
|
|
208
|
+
'float[]',
|
|
209
|
+
'bool',
|
|
210
|
+
'bool[]',
|
|
211
|
+
'geopoint',
|
|
212
|
+
'geopoint[]',
|
|
213
|
+
'object',
|
|
214
|
+
'object[]',
|
|
215
|
+
'auto',
|
|
216
|
+
'image'
|
|
196
217
|
];
|
|
197
218
|
schema.fields?.forEach(field => {
|
|
198
219
|
if (!validTypes.includes(field.type)) {
|
|
@@ -200,7 +221,8 @@ class CollectionSchemaManager {
|
|
|
200
221
|
}
|
|
201
222
|
});
|
|
202
223
|
// Check version-specific features
|
|
203
|
-
if (schema.enable_nested_fields &&
|
|
224
|
+
if (schema.enable_nested_fields &&
|
|
225
|
+
!this.isVersionSupported('nested_fields', '0.25.0')) {
|
|
204
226
|
errors.push('enable_nested_fields requires Typesense v0.25.0 or higher');
|
|
205
227
|
}
|
|
206
228
|
return {
|