Skip to content

Commit 0254b04

Browse files
committed
Add experimental features methods
1 parent 438da05 commit 0254b04

File tree

4 files changed

+72
-0
lines changed

4 files changed

+72
-0
lines changed

src/meilisearch.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import type {
2828
ExtraRequestInit,
2929
Network,
3030
RecordAny,
31+
RuntimeTogglableFeatures,
3132
} from "./types/index.js";
3233
import { ErrorStatusCode } from "./types/index.js";
3334
import { HttpRequests } from "./http-requests.js";
@@ -454,4 +455,25 @@ export class MeiliSearch {
454455
path: "snapshots",
455456
});
456457
}
458+
459+
///
460+
/// EXPERIMENTAL-FEATURES
461+
///
462+
463+
/** {@link https://www.meilisearch.com/docs/reference/api/experimental_features#get-all-experimental-features} */
464+
async getExperimentalFeatures(): Promise<RuntimeTogglableFeatures> {
465+
return await this.httpRequest.get({
466+
path: "experimental-features",
467+
});
468+
}
469+
470+
/** {@link https://www.meilisearch.com/docs/reference/api/experimental_features#configure-experimental-features} */
471+
async updateExperimentalFeatures(
472+
runtimeTogglableFeatures: RuntimeTogglableFeatures,
473+
): Promise<RuntimeTogglableFeatures> {
474+
return await this.httpRequest.patch({
475+
path: "experimental-features",
476+
body: runtimeTogglableFeatures,
477+
});
478+
}
457479
}

src/types/experimental-features.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/**
2+
* {@link https://www.meilisearch.com/docs/reference/api/experimental_features#experimental-features-object}
3+
*
4+
* @see `meilisearch::routes::features::RuntimeTogglableFeatures`
5+
*/
6+
export type RuntimeTogglableFeatures = {
7+
metrics?: boolean | null;
8+
logsRoute?: boolean | null;
9+
editDocumentsByFunction?: boolean | null;
10+
containsFilter?: boolean | null;
11+
network?: boolean | null;
12+
getTaskDocumentsRoute?: boolean | null;
13+
compositeEmbedders?: boolean | null;
14+
};

src/types/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
export * from "./experimental-features.js";
12
export * from "./task_and_batch.js";
23
export * from "./token.js";
34
export * from "./types.js";
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { afterAll, test } from "vitest";
2+
import { assert, getClient } from "./utils/meilisearch-test-utils.js";
3+
import type { RuntimeTogglableFeatures } from "../src/index.js";
4+
5+
const ms = await getClient("Master");
6+
7+
afterAll(async () => {
8+
await ms.updateExperimentalFeatures({
9+
metrics: false,
10+
logsRoute: false,
11+
editDocumentsByFunction: false,
12+
containsFilter: false,
13+
network: false,
14+
getTaskDocumentsRoute: false,
15+
compositeEmbedders: false,
16+
} satisfies { [TKey in keyof RuntimeTogglableFeatures]-?: false });
17+
});
18+
19+
test(`${ms.updateExperimentalFeatures.name} and ${ms.getExperimentalFeatures.name} methods`, async () => {
20+
const features: { [TKey in keyof RuntimeTogglableFeatures]-?: true } = {
21+
metrics: true,
22+
logsRoute: true,
23+
editDocumentsByFunction: true,
24+
containsFilter: true,
25+
network: true,
26+
getTaskDocumentsRoute: true,
27+
compositeEmbedders: true,
28+
};
29+
30+
const updateFeatures = await ms.updateExperimentalFeatures(features);
31+
assert.deepEqual(updateFeatures, features);
32+
33+
const getFeatures = await ms.getExperimentalFeatures();
34+
assert.deepEqual(getFeatures, features);
35+
});

0 commit comments

Comments
 (0)