@meilisearch/cli 0.0.0-stage → 0.1.0
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/LICENSE +21 -0
- package/README.md +97 -2
- package/bin/run.js +15 -0
- package/dist/commands/add/documents.js +54 -0
- package/dist/commands/add/documents.js.map +1 -0
- package/dist/commands/add/indexes.js +39 -0
- package/dist/commands/add/indexes.js.map +1 -0
- package/dist/commands/add/keys.js +63 -0
- package/dist/commands/add/keys.js.map +1 -0
- package/dist/commands/add/projects.js +96 -0
- package/dist/commands/add/projects.js.map +1 -0
- package/dist/commands/auth/login.js +26 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.js +33 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/auth/refresh.js +22 -0
- package/dist/commands/auth/refresh.js.map +1 -0
- package/dist/commands/auth/status.js +34 -0
- package/dist/commands/auth/status.js.map +1 -0
- package/dist/commands/cancel/tasks.js +24 -0
- package/dist/commands/cancel/tasks.js.map +1 -0
- package/dist/commands/config/list.js +18 -0
- package/dist/commands/config/list.js.map +1 -0
- package/dist/commands/config/set.js +48 -0
- package/dist/commands/config/set.js.map +1 -0
- package/dist/commands/config/sync-with-cloud.js +144 -0
- package/dist/commands/config/sync-with-cloud.js.map +1 -0
- package/dist/commands/config/unset.js +28 -0
- package/dist/commands/config/unset.js.map +1 -0
- package/dist/commands/config/update.js +53 -0
- package/dist/commands/config/update.js.map +1 -0
- package/dist/commands/delete/documents.js +81 -0
- package/dist/commands/delete/documents.js.map +1 -0
- package/dist/commands/delete/indexes.js +28 -0
- package/dist/commands/delete/indexes.js.map +1 -0
- package/dist/commands/delete/keys.js +28 -0
- package/dist/commands/delete/keys.js.map +1 -0
- package/dist/commands/delete/projects.js +40 -0
- package/dist/commands/delete/projects.js.map +1 -0
- package/dist/commands/delete/settings.js +28 -0
- package/dist/commands/delete/settings.js.map +1 -0
- package/dist/commands/delete/tasks.js +34 -0
- package/dist/commands/delete/tasks.js.map +1 -0
- package/dist/commands/export.js +67 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/facet-search.js +87 -0
- package/dist/commands/facet-search.js.map +1 -0
- package/dist/commands/get/batches.js +35 -0
- package/dist/commands/get/batches.js.map +1 -0
- package/dist/commands/get/documents.js +74 -0
- package/dist/commands/get/documents.js.map +1 -0
- package/dist/commands/get/health.js +17 -0
- package/dist/commands/get/health.js.map +1 -0
- package/dist/commands/get/indexes.js +33 -0
- package/dist/commands/get/indexes.js.map +1 -0
- package/dist/commands/get/keys.js +36 -0
- package/dist/commands/get/keys.js.map +1 -0
- package/dist/commands/get/projects.js +40 -0
- package/dist/commands/get/projects.js.map +1 -0
- package/dist/commands/get/settings.js +25 -0
- package/dist/commands/get/settings.js.map +1 -0
- package/dist/commands/get/stats.js +37 -0
- package/dist/commands/get/stats.js.map +1 -0
- package/dist/commands/get/tasks.js +35 -0
- package/dist/commands/get/tasks.js.map +1 -0
- package/dist/commands/get/version.js +16 -0
- package/dist/commands/get/version.js.map +1 -0
- package/dist/commands/multi-search.js +39 -0
- package/dist/commands/multi-search.js.map +1 -0
- package/dist/commands/schema.js +95 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/search.js +164 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/similar.js +86 -0
- package/dist/commands/similar.js.map +1 -0
- package/dist/commands/teleport.js +472 -0
- package/dist/commands/teleport.js.map +1 -0
- package/dist/commands/update/documents.js +56 -0
- package/dist/commands/update/documents.js.map +1 -0
- package/dist/commands/update/indexes.js +44 -0
- package/dist/commands/update/indexes.js.map +1 -0
- package/dist/commands/update/keys.js +42 -0
- package/dist/commands/update/keys.js.map +1 -0
- package/dist/commands/update/projects.js +62 -0
- package/dist/commands/update/projects.js.map +1 -0
- package/dist/commands/update/settings.js +145 -0
- package/dist/commands/update/settings.js.map +1 -0
- package/dist/lib/analytics.js +135 -0
- package/dist/lib/analytics.js.map +1 -0
- package/dist/lib/api-naming.js +435 -0
- package/dist/lib/api-naming.js.map +1 -0
- package/dist/lib/base-command.js +318 -0
- package/dist/lib/base-command.js.map +1 -0
- package/dist/lib/clients/analytics.js +24 -0
- package/dist/lib/clients/analytics.js.map +1 -0
- package/dist/lib/clients/management/generated/client/client.gen.js +217 -0
- package/dist/lib/clients/management/generated/client/client.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/client/index.js +7 -0
- package/dist/lib/clients/management/generated/client/index.js.map +1 -0
- package/dist/lib/clients/management/generated/client/types.gen.js +3 -0
- package/dist/lib/clients/management/generated/client/types.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/client/utils.gen.js +229 -0
- package/dist/lib/clients/management/generated/client/utils.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/client.gen.js +4 -0
- package/dist/lib/clients/management/generated/client.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/core/auth.gen.js +15 -0
- package/dist/lib/clients/management/generated/core/auth.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/core/bodySerializer.gen.js +58 -0
- package/dist/lib/clients/management/generated/core/bodySerializer.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/core/params.gen.js +110 -0
- package/dist/lib/clients/management/generated/core/params.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/core/pathSerializer.gen.js +107 -0
- package/dist/lib/clients/management/generated/core/pathSerializer.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/core/queryKeySerializer.gen.js +93 -0
- package/dist/lib/clients/management/generated/core/queryKeySerializer.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/core/serverSentEvents.gen.js +133 -0
- package/dist/lib/clients/management/generated/core/serverSentEvents.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/core/types.gen.js +3 -0
- package/dist/lib/clients/management/generated/core/types.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/core/utils.gen.js +88 -0
- package/dist/lib/clients/management/generated/core/utils.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/index.js +3 -0
- package/dist/lib/clients/management/generated/index.js.map +1 -0
- package/dist/lib/clients/management/generated/sdk.gen.js +398 -0
- package/dist/lib/clients/management/generated/sdk.gen.js.map +1 -0
- package/dist/lib/clients/management/generated/types.gen.js +3 -0
- package/dist/lib/clients/management/generated/types.gen.js.map +1 -0
- package/dist/lib/clients/management.js +21 -0
- package/dist/lib/clients/management.js.map +1 -0
- package/dist/lib/clients/meilisearch.js +69 -0
- package/dist/lib/clients/meilisearch.js.map +1 -0
- package/dist/lib/clients/oauth.js +225 -0
- package/dist/lib/clients/oauth.js.map +1 -0
- package/dist/lib/clients/ping.js +26 -0
- package/dist/lib/clients/ping.js.map +1 -0
- package/dist/lib/clients/trace.js +69 -0
- package/dist/lib/clients/trace.js.map +1 -0
- package/dist/lib/cloud-sync.js +113 -0
- package/dist/lib/cloud-sync.js.map +1 -0
- package/dist/lib/config.js +322 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.js +302 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/help.js +37 -0
- package/dist/lib/help.js.map +1 -0
- package/dist/lib/input.js +76 -0
- package/dist/lib/input.js.map +1 -0
- package/dist/lib/login.js +57 -0
- package/dist/lib/login.js.map +1 -0
- package/dist/lib/output.js +39 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/pagination.js +52 -0
- package/dist/lib/pagination.js.map +1 -0
- package/dist/lib/session.js +149 -0
- package/dist/lib/session.js.map +1 -0
- package/dist/lib/task-filters.js +118 -0
- package/dist/lib/task-filters.js.map +1 -0
- package/dist/lib/tasks.js +64 -0
- package/dist/lib/tasks.js.map +1 -0
- package/dist/lib/terminal.js +168 -0
- package/dist/lib/terminal.js.map +1 -0
- package/dist/lib/values.js +48 -0
- package/dist/lib/values.js.map +1 -0
- package/oclif.manifest.json +10470 -0
- package/package.json +81 -3
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { BaseCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { readBodyWithFields } from "../../lib/input.js";
|
|
4
|
+
import { asText } from "../../lib/values.js";
|
|
5
|
+
export default class UpdateKeys extends BaseCommand {
|
|
6
|
+
static api = "meilisearch";
|
|
7
|
+
static routes = ["PATCH /keys/{key}"];
|
|
8
|
+
static keyActions = ["keys.update"];
|
|
9
|
+
static description = "Change the name or the description of an API key, the two fields the route takes, and reset one with the value null.";
|
|
10
|
+
static examples = [
|
|
11
|
+
"<%= config.bin %> <%= command.id %> --project prod --id 52787ccd-48ff-48e5-9c4b-03cd76978a60 --name 'CI indexer'",
|
|
12
|
+
"<%= config.bin %> <%= command.id %> --project prod --id 52787ccd-48ff-48e5-9c4b-03cd76978a60 --description 'Indexes the catalog nightly' --output json",
|
|
13
|
+
"<%= config.bin %> <%= command.id %> --project prod --id 52787ccd-48ff-48e5-9c4b-03cd76978a60 --description null",
|
|
14
|
+
];
|
|
15
|
+
static flags = {
|
|
16
|
+
...BaseCommand.connectionFlags,
|
|
17
|
+
id: Flags.string({
|
|
18
|
+
required: true,
|
|
19
|
+
description: "The key to update, by its uid or by its key value.",
|
|
20
|
+
helpValue: "<key>",
|
|
21
|
+
}),
|
|
22
|
+
name: Flags.string({
|
|
23
|
+
description: "New name of the key. The value null removes the one it has.",
|
|
24
|
+
helpValue: "<name>",
|
|
25
|
+
}),
|
|
26
|
+
description: Flags.string({
|
|
27
|
+
description: "New description of the key. The value null removes the one it has.",
|
|
28
|
+
helpValue: "<text>",
|
|
29
|
+
}),
|
|
30
|
+
...BaseCommand.bodyInputFlags,
|
|
31
|
+
};
|
|
32
|
+
async run() {
|
|
33
|
+
const { flags } = await this.parse(UpdateKeys);
|
|
34
|
+
const fromFlags = {
|
|
35
|
+
name: asText(flags.name),
|
|
36
|
+
description: asText(flags.description),
|
|
37
|
+
};
|
|
38
|
+
const update = readBodyWithFields(flags, fromFlags);
|
|
39
|
+
await this.output(await this.meilisearch.updateKey(flags.id, update));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/commands/update/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAY,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAC,GAAG,GAAQ,aAAa,CAAC;IAEhC,MAAM,CAAC,MAAM,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAEtC,MAAM,CAAC,UAAU,GAAG,CAAC,aAAa,CAAC,CAAC;IAEpC,MAAM,CAAU,WAAW,GACzB,sHAAsH,CAAC;IAEzH,MAAM,CAAU,QAAQ,GAAG;QACzB,kHAAkH;QAClH,wJAAwJ;QACxJ,iHAAiH;KAClH,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,WAAW,CAAC,eAAe;QAC9B,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC;YACf,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,oDAAoD;YACjE,SAAS,EAAE,OAAO;SACnB,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,WAAW,EAAE,6DAA6D;YAC1E,SAAS,EAAE,QAAQ;SACpB,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,WAAW,EAAE,oEAAoE;YACjF,SAAS,EAAE,QAAQ;SACpB,CAAC;QACF,GAAG,WAAW,CAAC,cAAc;KAC9B,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,SAAS,GAA4B;YACzC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACxB,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;SACvC,CAAC;QACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAc,CAAC;QACjE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;CACF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { BaseCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { patchApiV2ProjectsById } from "../../lib/clients/management/generated/sdk.gen.js";
|
|
4
|
+
import { cloudOf, readTeamNames } from "../../lib/cloud-sync.js";
|
|
5
|
+
import { assertNoProject, cloudProjectEntry, writeConfigFile, } from "../../lib/config.js";
|
|
6
|
+
import { MeiliCliError } from "../../lib/errors.js";
|
|
7
|
+
import { readBodyWithFields } from "../../lib/input.js";
|
|
8
|
+
export default class UpdateProjects extends BaseCommand {
|
|
9
|
+
static api = "management";
|
|
10
|
+
static routes = ["PATCH /api/v2/projects/{id}"];
|
|
11
|
+
static description = "Rename a Meilisearch Cloud project.";
|
|
12
|
+
static examples = [
|
|
13
|
+
"<%= config.bin %> <%= command.id %> --id 343 --name renamed",
|
|
14
|
+
"<%= config.bin %> <%= command.id %> --id 343 --name renamed --output json",
|
|
15
|
+
"<%= config.bin %> <%= command.id %> --project prod --name renamed",
|
|
16
|
+
"<%= config.bin %> <%= command.id %> --project prod --name renamed --sync-config",
|
|
17
|
+
'<%= config.bin %> <%= command.id %> --id 343 --data \'{"name":"renamed"}\'',
|
|
18
|
+
];
|
|
19
|
+
static flags = {
|
|
20
|
+
...BaseCommand.cloudProjectFlags,
|
|
21
|
+
id: Flags.integer({
|
|
22
|
+
description: "The project to update, or give --project <name> and its cloud.id from the config file.",
|
|
23
|
+
helpValue: "<id>",
|
|
24
|
+
}),
|
|
25
|
+
name: Flags.string({ description: "New name of the project.", helpValue: "<name>" }),
|
|
26
|
+
"sync-config": Flags.boolean({
|
|
27
|
+
description: "Rename the project's entry of the config file after it: the entry --project names, or the one whose cloud.id is --id. Refreshes its cloud identifiers.",
|
|
28
|
+
}),
|
|
29
|
+
...BaseCommand.bodyInputFlags,
|
|
30
|
+
};
|
|
31
|
+
async run() {
|
|
32
|
+
const { flags } = await this.parse(UpdateProjects);
|
|
33
|
+
const id = this.cloudProjectId(flags.id);
|
|
34
|
+
const body = readBodyWithFields(flags, { name: flags.name });
|
|
35
|
+
// The entry takes the name checked here, whatever name the API answers.
|
|
36
|
+
let sync;
|
|
37
|
+
if (flags["sync-config"]) {
|
|
38
|
+
if (typeof body.name !== "string" || body.name === "") {
|
|
39
|
+
throw new MeiliCliError("cli_usage", "`--sync-config` renames the entry after the project: give `--name`.");
|
|
40
|
+
}
|
|
41
|
+
const file = this.configFile();
|
|
42
|
+
const entry = cloudProjectEntry(file, flags.project, id, ": nothing was renamed.");
|
|
43
|
+
if (body.name !== entry)
|
|
44
|
+
assertNoProject(file, body.name, ": nothing was renamed.");
|
|
45
|
+
sync = { file, entry, name: body.name };
|
|
46
|
+
}
|
|
47
|
+
const project = await patchApiV2ProjectsById({
|
|
48
|
+
client: this.managementClient,
|
|
49
|
+
path: { id },
|
|
50
|
+
body,
|
|
51
|
+
});
|
|
52
|
+
await this.output(project);
|
|
53
|
+
if (sync === undefined)
|
|
54
|
+
return;
|
|
55
|
+
const cloud = cloudOf(project, await readTeamNames(this.managementClient));
|
|
56
|
+
writeConfigFile({
|
|
57
|
+
path: sync.file.path,
|
|
58
|
+
projects: Object.fromEntries(Object.entries(sync.file.projects).map(([name, entry]) => name === sync.entry ? [sync.name, { ...entry, cloud }] : [name, entry])),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/commands/update/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { Flags } from "@oclif/core";
|
|
2
|
+
import { BaseCommand } from "../../lib/base-command.js";
|
|
3
|
+
import { readBodyWithFields } from "../../lib/input.js";
|
|
4
|
+
import { asJson, asList, asNumber, asText } from "../../lib/values.js";
|
|
5
|
+
export default class UpdateSettings extends BaseCommand {
|
|
6
|
+
static api = "meilisearch";
|
|
7
|
+
static routes = ["PATCH /indexes/{index_uid}/settings"];
|
|
8
|
+
static keyActions = ["settings.update"];
|
|
9
|
+
static description = "Change the settings given, leave the others as they are, and reset one with the value null.";
|
|
10
|
+
static examples = [
|
|
11
|
+
"<%= config.bin %> <%= command.id %> --project prod --index movies --searchable-attributes title,overview",
|
|
12
|
+
"<%= config.bin %> <%= command.id %> --project prod --index movies --filterable-attributes genres,release_date --output json",
|
|
13
|
+
"<%= config.bin %> <%= command.id %> --project prod --index movies --stop-words null",
|
|
14
|
+
"<%= config.bin %> <%= command.id %> --project prod --index movies --typo-tolerance '{\"enabled\":false}' --wait",
|
|
15
|
+
"<%= config.bin %> <%= command.id %> --project prod --index movies --file settings.json",
|
|
16
|
+
];
|
|
17
|
+
static flags = {
|
|
18
|
+
...BaseCommand.connectionFlags,
|
|
19
|
+
index: Flags.string({
|
|
20
|
+
required: true,
|
|
21
|
+
description: "The index to update the settings of.",
|
|
22
|
+
helpValue: "<index>",
|
|
23
|
+
}),
|
|
24
|
+
"displayed-attributes": Flags.string({
|
|
25
|
+
description: "Fields returned in search results, comma-separated.",
|
|
26
|
+
helpValue: "<fields>",
|
|
27
|
+
}),
|
|
28
|
+
"searchable-attributes": Flags.string({
|
|
29
|
+
description: "Fields searched for query words, comma-separated, in order of importance for the ranking.",
|
|
30
|
+
helpValue: "<fields>",
|
|
31
|
+
}),
|
|
32
|
+
"filterable-attributes": Flags.string({
|
|
33
|
+
description: "Attributes usable as filters and facets, comma-separated. Their rule form goes through --data.",
|
|
34
|
+
helpValue: "<fields>",
|
|
35
|
+
}),
|
|
36
|
+
"sortable-attributes": Flags.string({
|
|
37
|
+
description: "Attributes usable to sort the search results, comma-separated.",
|
|
38
|
+
helpValue: "<fields>",
|
|
39
|
+
}),
|
|
40
|
+
"foreign-keys": Flags.string({
|
|
41
|
+
description: 'Foreign keys for cross-index filtering, as JSON: `[{"foreignIndexUid":"products","fieldName":"productId"}]`.',
|
|
42
|
+
helpValue: "<json>",
|
|
43
|
+
}),
|
|
44
|
+
"ranking-rules": Flags.string({
|
|
45
|
+
description: "Ranking rules in order of importance, comma-separated, built-in or `attribute:asc` and `:desc`.",
|
|
46
|
+
helpValue: "<rules>",
|
|
47
|
+
}),
|
|
48
|
+
"stop-words": Flags.string({
|
|
49
|
+
description: "Words ignored when they appear in a search query, comma-separated.",
|
|
50
|
+
helpValue: "<words>",
|
|
51
|
+
}),
|
|
52
|
+
"non-separator-tokens": Flags.string({
|
|
53
|
+
description: "Characters removed from the default separators, comma-separated, so that they no longer split words.",
|
|
54
|
+
helpValue: "<tokens>",
|
|
55
|
+
}),
|
|
56
|
+
"separator-tokens": Flags.string({
|
|
57
|
+
description: "Characters added to the default separators, comma-separated.",
|
|
58
|
+
helpValue: "<tokens>",
|
|
59
|
+
}),
|
|
60
|
+
dictionary: Flags.string({
|
|
61
|
+
description: "Strings parsed as a single term, comma-separated, such as names.",
|
|
62
|
+
helpValue: "<words>",
|
|
63
|
+
}),
|
|
64
|
+
synonyms: Flags.string({
|
|
65
|
+
description: 'Words treated as equivalent, as JSON: `{"phone":["iPhone"]}`.',
|
|
66
|
+
helpValue: "<json>",
|
|
67
|
+
}),
|
|
68
|
+
"distinct-attribute": Flags.string({
|
|
69
|
+
description: "Field whose value must be unique in the returned documents.",
|
|
70
|
+
helpValue: "<attribute>",
|
|
71
|
+
}),
|
|
72
|
+
"proximity-precision": Flags.string({
|
|
73
|
+
description: "Precision of the proximity ranking rule, `byWord` or `byAttribute`, which indexes faster.",
|
|
74
|
+
helpValue: "<precision>",
|
|
75
|
+
}),
|
|
76
|
+
"typo-tolerance": Flags.string({
|
|
77
|
+
description: 'Typo tolerance as JSON, for example `{"enabled":false}`.',
|
|
78
|
+
helpValue: "<json>",
|
|
79
|
+
}),
|
|
80
|
+
faceting: Flags.string({
|
|
81
|
+
description: 'Faceting as JSON, for example `{"maxValuesPerFacet":200}`.',
|
|
82
|
+
helpValue: "<json>",
|
|
83
|
+
}),
|
|
84
|
+
pagination: Flags.string({
|
|
85
|
+
description: 'Pagination as JSON, for example `{"maxTotalHits":2000}`.',
|
|
86
|
+
helpValue: "<json>",
|
|
87
|
+
}),
|
|
88
|
+
embedders: Flags.string({
|
|
89
|
+
description: 'Embedders as JSON, a map of name to configuration: `{"default":{"source":"openAi"}}`.',
|
|
90
|
+
helpValue: "<json>",
|
|
91
|
+
}),
|
|
92
|
+
"search-cutoff-ms": Flags.string({
|
|
93
|
+
description: "Maximum duration of a search in milliseconds, 1500 when it is null.",
|
|
94
|
+
helpValue: "<ms>",
|
|
95
|
+
}),
|
|
96
|
+
"localized-attributes": Flags.string({
|
|
97
|
+
description: 'Locales of the attributes, as JSON: `[{"locales":["jpn"],"attributePatterns":["*_ja"]}]`.',
|
|
98
|
+
helpValue: "<json>",
|
|
99
|
+
}),
|
|
100
|
+
"facet-search": Flags.string({
|
|
101
|
+
description: "Whether the facet-search route is enabled on this index, `true` or `false`.",
|
|
102
|
+
helpValue: "<boolean>",
|
|
103
|
+
}),
|
|
104
|
+
"prefix-search": Flags.string({
|
|
105
|
+
description: "When prefix matches are computed, `indexingTime` or `disabled`, which indexes faster.",
|
|
106
|
+
helpValue: "<mode>",
|
|
107
|
+
}),
|
|
108
|
+
chat: Flags.string({
|
|
109
|
+
description: 'Chat settings as JSON, for example `{"description":"A movie database"}`, which the LLM reads.',
|
|
110
|
+
helpValue: "<json>",
|
|
111
|
+
}),
|
|
112
|
+
...BaseCommand.bodyInputFlags,
|
|
113
|
+
...BaseCommand.waitFlags,
|
|
114
|
+
};
|
|
115
|
+
async run() {
|
|
116
|
+
const { flags } = await this.parse(UpdateSettings);
|
|
117
|
+
const fromFlags = {
|
|
118
|
+
displayedAttributes: asList(flags["displayed-attributes"]),
|
|
119
|
+
searchableAttributes: asList(flags["searchable-attributes"]),
|
|
120
|
+
filterableAttributes: asList(flags["filterable-attributes"]),
|
|
121
|
+
sortableAttributes: asList(flags["sortable-attributes"]),
|
|
122
|
+
foreignKeys: asJson(flags["foreign-keys"]),
|
|
123
|
+
rankingRules: asList(flags["ranking-rules"]),
|
|
124
|
+
stopWords: asList(flags["stop-words"]),
|
|
125
|
+
nonSeparatorTokens: asList(flags["non-separator-tokens"]),
|
|
126
|
+
separatorTokens: asList(flags["separator-tokens"]),
|
|
127
|
+
dictionary: asList(flags.dictionary),
|
|
128
|
+
synonyms: asJson(flags.synonyms),
|
|
129
|
+
distinctAttribute: asText(flags["distinct-attribute"]),
|
|
130
|
+
proximityPrecision: asText(flags["proximity-precision"]),
|
|
131
|
+
typoTolerance: asJson(flags["typo-tolerance"]),
|
|
132
|
+
faceting: asJson(flags.faceting),
|
|
133
|
+
pagination: asJson(flags.pagination),
|
|
134
|
+
embedders: asJson(flags.embedders),
|
|
135
|
+
searchCutoffMs: asNumber(flags["search-cutoff-ms"]),
|
|
136
|
+
localizedAttributes: asJson(flags["localized-attributes"]),
|
|
137
|
+
facetSearch: asJson(flags["facet-search"]),
|
|
138
|
+
prefixSearch: asText(flags["prefix-search"]),
|
|
139
|
+
chat: asJson(flags.chat),
|
|
140
|
+
};
|
|
141
|
+
const settings = readBodyWithFields(flags, fromFlags);
|
|
142
|
+
await this.outputTask(await this.meilisearch.index(flags.index).updateSettings(settings), flags);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/update/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anonymous usage analytics (ADR 0016): when nothing is sent, the anonymous id,
|
|
3
|
+
* and the events a command collects while it runs. `BaseCommand` sends them
|
|
4
|
+
* when the command ends, through `clients/analytics.ts`.
|
|
5
|
+
*/
|
|
6
|
+
import { randomUUID } from "node:crypto";
|
|
7
|
+
import { readFileSync } from "node:fs";
|
|
8
|
+
import { dirname, join } from "node:path";
|
|
9
|
+
import { sendEvents } from "./clients/analytics.js";
|
|
10
|
+
import { configFilePath, DEFAULT_MANAGEMENT_URL, ENV, nonEmpty, writeSecretFile, } from "./config.js";
|
|
11
|
+
import { isRecord, writeNotice } from "./errors.js";
|
|
12
|
+
import { credentialsFilePath, readCredentialsFile } from "./session.js";
|
|
13
|
+
const NOTICE = "meili sends anonymous usage data to Meilisearch: the commands you run, the names of their flags, and their errors. Never the values of the flags, your data or your keys. To turn it off, set MEILI_NO_ANALYTICS=true.";
|
|
14
|
+
const collected = [];
|
|
15
|
+
/** Adds an event to the ones the command sends when it ends. */
|
|
16
|
+
export function track(event, properties) {
|
|
17
|
+
collected.push({ event, properties, timestamp: new Date().toISOString() });
|
|
18
|
+
}
|
|
19
|
+
const isOn = (value) => value === "1" || value?.toLowerCase() === "true";
|
|
20
|
+
/**
|
|
21
|
+
* Off when the human asks, in CI, and against a Cloud other than Meilisearch
|
|
22
|
+
* Cloud, whose users do not belong in its PostHog project.
|
|
23
|
+
*/
|
|
24
|
+
function enabled(env) {
|
|
25
|
+
const managementUrl = nonEmpty(env[ENV.MANAGEMENT_URL]);
|
|
26
|
+
return !(isOn(env[ENV.NO_ANALYTICS]) ||
|
|
27
|
+
isOn(env.DO_NOT_TRACK) ||
|
|
28
|
+
env.CI !== undefined ||
|
|
29
|
+
(managementUrl !== undefined && managementUrl !== DEFAULT_MANAGEMENT_URL));
|
|
30
|
+
}
|
|
31
|
+
const analyticsFilePath = (env) => join(dirname(configFilePath(env)), "analytics.json");
|
|
32
|
+
/**
|
|
33
|
+
* The id of `analytics.json`, next to the config file. The first time, the
|
|
34
|
+
* file is written and the notice shown. When the file cannot be written, each
|
|
35
|
+
* process has its own id, and the notice is not repeated on every command.
|
|
36
|
+
*/
|
|
37
|
+
function anonymousId(env) {
|
|
38
|
+
const path = analyticsFilePath(env);
|
|
39
|
+
try {
|
|
40
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
41
|
+
if (isRecord(parsed) && typeof parsed.anonymousId === "string")
|
|
42
|
+
return parsed.anonymousId;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// No file yet, or not ours: a new id replaces it.
|
|
46
|
+
}
|
|
47
|
+
const id = randomUUID();
|
|
48
|
+
try {
|
|
49
|
+
writeSecretFile(path, { anonymousId: id });
|
|
50
|
+
writeNotice(NOTICE);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// A read-only mount, for example.
|
|
54
|
+
}
|
|
55
|
+
return id;
|
|
56
|
+
}
|
|
57
|
+
/** The Cloud user of the session of `auth login`, if any. */
|
|
58
|
+
function sessionUserId(env) {
|
|
59
|
+
try {
|
|
60
|
+
return readCredentialsFile(credentialsFilePath(env), () => { })?.userId;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// A malformed file: the next management command says so.
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* After a login, when usage data is sent: the id of the Cloud user, to store
|
|
69
|
+
* in the session, and one `$identify` that joins the anonymous id to it.
|
|
70
|
+
* Undefined when nothing is sent or `fetchUserId` fails: the CLI stays anonymous.
|
|
71
|
+
*/
|
|
72
|
+
export async function identify(env, fetchUserId) {
|
|
73
|
+
if (!enabled(env))
|
|
74
|
+
return undefined;
|
|
75
|
+
let userId;
|
|
76
|
+
try {
|
|
77
|
+
userId = await fetchUserId();
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
track("$identify", { $anon_distinct_id: anonymousId(env) });
|
|
83
|
+
return userId;
|
|
84
|
+
}
|
|
85
|
+
/** After a logout: a new anonymous id, so the next person on the machine is not joined to the previous one. */
|
|
86
|
+
export function resetAnonymousId(env) {
|
|
87
|
+
if (!enabled(env))
|
|
88
|
+
return;
|
|
89
|
+
try {
|
|
90
|
+
writeSecretFile(analyticsFilePath(env), { anonymousId: randomUUID() });
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// A read-only mount, for example.
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** Sends the events the command collected, each with `common`, then forgets them. */
|
|
97
|
+
export async function sendAnalytics(env, common) {
|
|
98
|
+
const events = collected.splice(0);
|
|
99
|
+
if (!enabled(env))
|
|
100
|
+
return;
|
|
101
|
+
const userId = sessionUserId(env);
|
|
102
|
+
const distinctId = userId ?? anonymousId(env);
|
|
103
|
+
const properties = {
|
|
104
|
+
...common,
|
|
105
|
+
site: "cli",
|
|
106
|
+
os: process.platform,
|
|
107
|
+
arch: process.arch,
|
|
108
|
+
node_version: process.versions.node,
|
|
109
|
+
tty: process.stdin.isTTY === true && process.stderr.isTTY === true,
|
|
110
|
+
$lib: "meili-cli",
|
|
111
|
+
...(userId === undefined && { $process_person_profile: false }),
|
|
112
|
+
};
|
|
113
|
+
await sendEvents(events.map((event) => ({
|
|
114
|
+
...event,
|
|
115
|
+
distinct_id: distinctId,
|
|
116
|
+
properties: { ...properties, ...event.properties },
|
|
117
|
+
})));
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The names of the flags on the command line, never their values. Only the
|
|
121
|
+
* names the command declares: an argument that only looks like a flag is a value.
|
|
122
|
+
*/
|
|
123
|
+
export function flagNames(argv, flags) {
|
|
124
|
+
const known = new Map();
|
|
125
|
+
for (const [name, flag] of Object.entries(flags)) {
|
|
126
|
+
known.set(`--${name}`, name);
|
|
127
|
+
if (flag.char !== undefined)
|
|
128
|
+
known.set(`-${flag.char}`, name);
|
|
129
|
+
if (flag.allowNo === true)
|
|
130
|
+
known.set(`--no-${name}`, `no-${name}`);
|
|
131
|
+
}
|
|
132
|
+
const names = argv.flatMap((arg) => known.get(arg.split("=")[0] ?? "") ?? []);
|
|
133
|
+
return [...new Set(names)];
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/lib/analytics.ts"],"names":[],"mappings":"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"}
|