diff --git a/packages/orama/src/methods/create.ts b/packages/orama/src/methods/create.ts index 17b29728c..a446bb797 100644 --- a/packages/orama/src/methods/create.ts +++ b/packages/orama/src/methods/create.ts @@ -1,13 +1,14 @@ import { formatElapsedTime, getDocumentIndexId, getDocumentProperties, validateSchema } from '../components/defaults.js' -import { createDocumentsStore } from '../components/documents-store.js' +import { DocumentsStore, createDocumentsStore } from '../components/documents-store.js' import { FUNCTION_COMPONENTS, OBJECT_COMPONENTS, SINGLE_OR_ARRAY_COMPONENTS } from '../components/hooks.js' -import { createIndex } from '../components/index.js' +import { Index, createIndex } from '../components/index.js' import { createInternalDocumentIDStore } from '../components/internal-document-id-store.js' -import { createSorter } from '../components/sorter.js' +import { Sorter, createSorter } from '../components/sorter.js' import { createTokenizer } from '../components/tokenizer/index.js' import { createError } from '../errors.js' import { AfterSearch, + AnySchema, ArrayCallbackComponents, Components, FunctionComponents, @@ -84,11 +85,11 @@ function validateComponents> ({ + const OramaSchema extends AnySchema, + TIndex = Index, + TDocumentStore = DocumentsStore, + TSorter = Sorter, + ResultOrama extends Orama = Orama> ({ schema, sort, language, diff --git a/packages/orama/src/methods/serialization.ts b/packages/orama/src/methods/serialization.ts index d81b8b902..48b299470 100644 --- a/packages/orama/src/methods/serialization.ts +++ b/packages/orama/src/methods/serialization.ts @@ -1,10 +1,12 @@ import { AnyOrama } from '../types.js' +import { Language } from '../index.js' export interface RawData { internalDocumentIDStore: unknown index: unknown docs: unknown sorting: unknown + language: Language } export async function load(orama: T, raw: RawData): Promise { @@ -12,6 +14,7 @@ export async function load(orama: T, raw: RawData): Promise< orama.data.index = await orama.index.load(orama.internalDocumentIDStore, raw.index) orama.data.docs = await orama.documentsStore.load(orama.internalDocumentIDStore, raw.docs) orama.data.sorting = await orama.sorter.load(orama.internalDocumentIDStore, raw.sorting) + orama.tokenizer.language = raw.language } export async function save(orama: T): Promise { @@ -20,5 +23,6 @@ export async function save(orama: T): Promise { index: await orama.index.save(orama.data.index), docs: await orama.documentsStore.save(orama.data.docs), sorting: await orama.sorter.save(orama.data.sorting), + language: orama.tokenizer.language, } } diff --git a/packages/orama/src/types.ts b/packages/orama/src/types.ts index 0f557273e..ba52db69a 100644 --- a/packages/orama/src/types.ts +++ b/packages/orama/src/types.ts @@ -1,4 +1,7 @@ +import { DocumentsStore } from './components/documents-store.js' +import { Index } from './components/index.js' import { DocumentID, InternalDocumentID, InternalDocumentIDStore } from './components/internal-document-id-store.js' +import { Sorter } from './components/sorter.js' import { Language } from './components/tokenizer/languages.js' export type Nullable = T | null @@ -805,7 +808,7 @@ export type PickInferGeneric = T extends AnyGeneric : never : never -export type Orama = FunctionComponents & +export type Orama = FunctionComponents & Internals, AnyGenericDocumentStore, AnyGenericSorter> & ArrayCallbackComponents & OramaID diff --git a/packages/orama/tests/update.test.ts b/packages/orama/tests/update.test.ts index 432a17560..3de124ac5 100644 --- a/packages/orama/tests/update.test.ts +++ b/packages/orama/tests/update.test.ts @@ -1,5 +1,5 @@ import t from 'tap' -import { create, insert, getByID, update, updateMultiple, count } from '../src/index.js' +import { count, create, getByID, insert, update, updateMultiple } from '../src/index.js' t.test('update method', t => { t.plan(1)