@miosa/cli 0.2.0 → 1.0.1
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/CHANGELOG.md +35 -0
- package/dist/bin/miosa.js +20 -1
- package/dist/bin/miosa.js.map +1 -1
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +19 -0
- package/dist/client.js.map +1 -1
- package/dist/commands/billing.d.ts +3 -0
- package/dist/commands/billing.d.ts.map +1 -0
- package/dist/commands/billing.js +211 -0
- package/dist/commands/billing.js.map +1 -0
- package/dist/commands/builds.d.ts +3 -0
- package/dist/commands/builds.d.ts.map +1 -0
- package/dist/commands/builds.js +198 -0
- package/dist/commands/builds.js.map +1 -0
- package/dist/commands/databases.d.ts.map +1 -1
- package/dist/commands/databases.js +159 -1
- package/dist/commands/databases.js.map +1 -1
- package/dist/commands/env.d.ts +3 -0
- package/dist/commands/env.d.ts.map +1 -0
- package/dist/commands/env.js +176 -0
- package/dist/commands/env.js.map +1 -0
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +123 -45
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/regions.d.ts.map +1 -1
- package/dist/commands/regions.js +37 -1
- package/dist/commands/regions.js.map +1 -1
- package/dist/commands/releases.d.ts.map +1 -1
- package/dist/commands/releases.js +67 -0
- package/dist/commands/releases.js.map +1 -1
- package/dist/commands/rollback.d.ts +3 -0
- package/dist/commands/rollback.d.ts.map +1 -0
- package/dist/commands/rollback.js +62 -0
- package/dist/commands/rollback.js.map +1 -0
- package/dist/commands/scale.d.ts +3 -0
- package/dist/commands/scale.d.ts.map +1 -0
- package/dist/commands/scale.js +61 -0
- package/dist/commands/scale.js.map +1 -0
- package/dist/commands/storage.d.ts.map +1 -1
- package/dist/commands/storage.js +198 -0
- package/dist/commands/storage.js.map +1 -1
- package/dist/commands/teams.d.ts +3 -0
- package/dist/commands/teams.d.ts.map +1 -0
- package/dist/commands/teams.js +171 -0
- package/dist/commands/teams.js.map +1 -0
- package/dist/commands/templates.d.ts +3 -0
- package/dist/commands/templates.d.ts.map +1 -0
- package/dist/commands/templates.js +266 -0
- package/dist/commands/templates.js.map +1 -0
- package/dist/update-check.d.ts +13 -0
- package/dist/update-check.d.ts.map +1 -0
- package/dist/update-check.js +91 -0
- package/dist/update-check.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { loadConfig } from "../config.js";
|
|
4
|
+
import { MiosaClient } from "../client.js";
|
|
5
|
+
import { renderTable } from "../ui/table.js";
|
|
6
|
+
import { spin } from "../ui/spinner.js";
|
|
7
|
+
import { handleError } from "./util.js";
|
|
8
|
+
function unwrapTemplates(raw) {
|
|
9
|
+
if (Array.isArray(raw))
|
|
10
|
+
return raw;
|
|
11
|
+
return raw.data ?? raw.templates ?? [];
|
|
12
|
+
}
|
|
13
|
+
function unwrapTemplate(raw) {
|
|
14
|
+
if ("data" in raw && raw.data)
|
|
15
|
+
return raw.data;
|
|
16
|
+
if ("template" in raw && raw.template)
|
|
17
|
+
return raw.template;
|
|
18
|
+
return raw;
|
|
19
|
+
}
|
|
20
|
+
function unwrapBuilds(raw) {
|
|
21
|
+
if (Array.isArray(raw))
|
|
22
|
+
return raw;
|
|
23
|
+
return raw.data ?? raw.builds ?? [];
|
|
24
|
+
}
|
|
25
|
+
function fmtTemplateState(state) {
|
|
26
|
+
if (!state)
|
|
27
|
+
return chalk.dim("-");
|
|
28
|
+
if (state === "ready" || state === "active")
|
|
29
|
+
return chalk.green(state);
|
|
30
|
+
if (state === "building" || state === "pending")
|
|
31
|
+
return chalk.yellow(state);
|
|
32
|
+
if (state === "failed" || state === "error")
|
|
33
|
+
return chalk.red(state);
|
|
34
|
+
return chalk.dim(state);
|
|
35
|
+
}
|
|
36
|
+
function fmtBuildState(state) {
|
|
37
|
+
if (!state)
|
|
38
|
+
return chalk.dim("-");
|
|
39
|
+
if (state === "success" || state === "complete")
|
|
40
|
+
return chalk.green(state);
|
|
41
|
+
if (state === "building" || state === "running" || state === "pending")
|
|
42
|
+
return chalk.yellow(state);
|
|
43
|
+
if (state === "failed" || state === "error")
|
|
44
|
+
return chalk.red(state);
|
|
45
|
+
return chalk.dim(state);
|
|
46
|
+
}
|
|
47
|
+
export function register(program) {
|
|
48
|
+
const templates = program
|
|
49
|
+
.command("templates")
|
|
50
|
+
.description("Manage sandbox templates");
|
|
51
|
+
// list
|
|
52
|
+
templates
|
|
53
|
+
.command("list")
|
|
54
|
+
.description("List sandbox templates")
|
|
55
|
+
.option("--json", "Output raw JSON")
|
|
56
|
+
.action(async (opts) => {
|
|
57
|
+
try {
|
|
58
|
+
const config = loadConfig();
|
|
59
|
+
const client = new MiosaClient(config);
|
|
60
|
+
const spinner = spin("Fetching templates...");
|
|
61
|
+
const rows = unwrapTemplates(await client.apiGet("/api/v1/sandbox-templates"));
|
|
62
|
+
spinner.stop();
|
|
63
|
+
if (opts.json) {
|
|
64
|
+
console.log(JSON.stringify(rows, null, 2));
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (rows.length === 0) {
|
|
68
|
+
console.log(chalk.dim("No templates found."));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
renderTable(rows, [
|
|
72
|
+
{ header: "ID", key: (t) => t.id.slice(0, 12), width: 14 },
|
|
73
|
+
{ header: "NAME", key: "name", width: 28 },
|
|
74
|
+
{
|
|
75
|
+
header: "STATE",
|
|
76
|
+
key: (t) => fmtTemplateState(t.state),
|
|
77
|
+
width: 12,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
header: "IMAGE",
|
|
81
|
+
key: (t) => t.image
|
|
82
|
+
? t.image.length > 32
|
|
83
|
+
? `${t.image.slice(0, 29)}...`
|
|
84
|
+
: t.image
|
|
85
|
+
: chalk.dim("-"),
|
|
86
|
+
width: 34,
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
header: "CREATED",
|
|
90
|
+
key: (t) => t.created_at ? t.created_at.slice(0, 10) : chalk.dim("-"),
|
|
91
|
+
width: 12,
|
|
92
|
+
},
|
|
93
|
+
]);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
handleError(err);
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
// get
|
|
100
|
+
templates
|
|
101
|
+
.command("get <id>")
|
|
102
|
+
.description("Get sandbox template details")
|
|
103
|
+
.option("--json", "Output raw JSON")
|
|
104
|
+
.action(async (id, opts) => {
|
|
105
|
+
try {
|
|
106
|
+
const config = loadConfig();
|
|
107
|
+
const client = new MiosaClient(config);
|
|
108
|
+
const spinner = spin("Fetching template...");
|
|
109
|
+
const tmpl = unwrapTemplate(await client.apiGet(`/api/v1/sandbox-templates/${encodeURIComponent(id)}`));
|
|
110
|
+
spinner.stop();
|
|
111
|
+
if (opts.json) {
|
|
112
|
+
console.log(JSON.stringify(tmpl, null, 2));
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
console.log();
|
|
116
|
+
console.log(` ${chalk.bold("ID")} ${tmpl.id}`);
|
|
117
|
+
console.log(` ${chalk.bold("Name")} ${tmpl.name}`);
|
|
118
|
+
console.log(` ${chalk.bold("State")} ${fmtTemplateState(tmpl.state)}`);
|
|
119
|
+
if (tmpl.image)
|
|
120
|
+
console.log(` ${chalk.bold("Image")} ${tmpl.image}`);
|
|
121
|
+
if (tmpl.created_at)
|
|
122
|
+
console.log(` ${chalk.bold("Created")} ${tmpl.created_at}`);
|
|
123
|
+
if (tmpl.updated_at)
|
|
124
|
+
console.log(` ${chalk.bold("Updated")} ${tmpl.updated_at}`);
|
|
125
|
+
console.log();
|
|
126
|
+
console.log(chalk.dim(` Run "miosa templates builds ${tmpl.id}" to view build history.`));
|
|
127
|
+
console.log();
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
handleError(err);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
// create
|
|
134
|
+
templates
|
|
135
|
+
.command("create")
|
|
136
|
+
.description("Create a sandbox template from a Dockerfile")
|
|
137
|
+
.requiredOption("--name <name>", "Template name")
|
|
138
|
+
.requiredOption("--dockerfile <path>", "Path to Dockerfile to build the template from")
|
|
139
|
+
.option("--json", "Output raw JSON")
|
|
140
|
+
.action(async (opts) => {
|
|
141
|
+
try {
|
|
142
|
+
let dockerfileContent;
|
|
143
|
+
try {
|
|
144
|
+
dockerfileContent = readFileSync(opts.dockerfile, "utf8");
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
console.error(chalk.red(`Cannot read Dockerfile at ${opts.dockerfile}: ${err instanceof Error ? err.message : String(err)}`));
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|
|
150
|
+
const config = loadConfig();
|
|
151
|
+
const client = new MiosaClient(config);
|
|
152
|
+
const spinner = spin(`Creating template ${opts.name}...`);
|
|
153
|
+
const tmpl = unwrapTemplate(await client.apiPost("/api/v1/sandbox-templates", {
|
|
154
|
+
name: opts.name,
|
|
155
|
+
dockerfile: dockerfileContent,
|
|
156
|
+
}));
|
|
157
|
+
spinner.succeed(`Created template ${tmpl.name}`);
|
|
158
|
+
if (opts.json) {
|
|
159
|
+
console.log(JSON.stringify(tmpl, null, 2));
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
console.log();
|
|
163
|
+
console.log(` ${chalk.bold("ID")} ${tmpl.id}`);
|
|
164
|
+
console.log(` ${chalk.bold("Name")} ${tmpl.name}`);
|
|
165
|
+
console.log(` ${chalk.bold("State")} ${fmtTemplateState(tmpl.state)}`);
|
|
166
|
+
console.log();
|
|
167
|
+
console.log(chalk.dim(` Run "miosa templates builds ${tmpl.id}" to track the build.`));
|
|
168
|
+
console.log();
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
handleError(err);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
// builds
|
|
175
|
+
templates
|
|
176
|
+
.command("builds <id>")
|
|
177
|
+
.description("List builds for a sandbox template")
|
|
178
|
+
.option("--json", "Output raw JSON")
|
|
179
|
+
.action(async (id, opts) => {
|
|
180
|
+
try {
|
|
181
|
+
const config = loadConfig();
|
|
182
|
+
const client = new MiosaClient(config);
|
|
183
|
+
const spinner = spin("Fetching builds...");
|
|
184
|
+
const rows = unwrapBuilds(await client.apiGet(`/api/v1/sandbox-templates/${encodeURIComponent(id)}/builds`));
|
|
185
|
+
spinner.stop();
|
|
186
|
+
if (opts.json) {
|
|
187
|
+
console.log(JSON.stringify(rows, null, 2));
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if (rows.length === 0) {
|
|
191
|
+
console.log(chalk.dim("No builds found."));
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
renderTable(rows, [
|
|
195
|
+
{ header: "BUILD ID", key: (b) => b.id.slice(0, 12), width: 14 },
|
|
196
|
+
{
|
|
197
|
+
header: "STATE",
|
|
198
|
+
key: (b) => fmtBuildState(b.state),
|
|
199
|
+
width: 12,
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
header: "STARTED",
|
|
203
|
+
key: (b) => b.started_at
|
|
204
|
+
? b.started_at.slice(0, 19).replace("T", " ")
|
|
205
|
+
: chalk.dim("-"),
|
|
206
|
+
width: 20,
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
header: "FINISHED",
|
|
210
|
+
key: (b) => b.finished_at
|
|
211
|
+
? b.finished_at.slice(0, 19).replace("T", " ")
|
|
212
|
+
: chalk.dim("-"),
|
|
213
|
+
width: 20,
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
header: "ERROR",
|
|
217
|
+
key: (b) => b.error
|
|
218
|
+
? chalk.red(b.error.length > 30
|
|
219
|
+
? `${b.error.slice(0, 27)}...`
|
|
220
|
+
: b.error)
|
|
221
|
+
: chalk.dim("-"),
|
|
222
|
+
width: 32,
|
|
223
|
+
},
|
|
224
|
+
]);
|
|
225
|
+
}
|
|
226
|
+
catch (err) {
|
|
227
|
+
handleError(err);
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
// delete
|
|
231
|
+
templates
|
|
232
|
+
.command("delete <id>")
|
|
233
|
+
.description("Delete a sandbox template")
|
|
234
|
+
.option("-f, --force", "Skip confirmation prompt")
|
|
235
|
+
.option("--json", "Output raw JSON")
|
|
236
|
+
.action(async (id, opts) => {
|
|
237
|
+
try {
|
|
238
|
+
if (!opts.force) {
|
|
239
|
+
const { default: inquirer } = await import("inquirer");
|
|
240
|
+
const { ok } = await inquirer.prompt([
|
|
241
|
+
{
|
|
242
|
+
type: "confirm",
|
|
243
|
+
name: "ok",
|
|
244
|
+
message: chalk.red(`Delete template ${id}? This will remove the template and its build history.`),
|
|
245
|
+
default: false,
|
|
246
|
+
},
|
|
247
|
+
]);
|
|
248
|
+
if (!ok) {
|
|
249
|
+
console.log(chalk.dim(" Cancelled."));
|
|
250
|
+
process.exit(0);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
const config = loadConfig();
|
|
254
|
+
const client = new MiosaClient(config);
|
|
255
|
+
const spinner = spin("Deleting template...");
|
|
256
|
+
const result = await client.apiDelete(`/api/v1/sandbox-templates/${encodeURIComponent(id)}`);
|
|
257
|
+
spinner.succeed("Template deleted");
|
|
258
|
+
if (opts.json)
|
|
259
|
+
console.log(JSON.stringify(result ?? { ok: true }, null, 2));
|
|
260
|
+
}
|
|
261
|
+
catch (err) {
|
|
262
|
+
handleError(err);
|
|
263
|
+
}
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/commands/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-update checker — fires async after command completion.
|
|
3
|
+
* Checks npm registry for the latest @miosa/cli version once per 24h.
|
|
4
|
+
* Caches the result in ~/.miosa/update-check.json.
|
|
5
|
+
* Never blocks the command; errors are silently swallowed.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Schedule an async update check that prints a notice if a newer version is
|
|
9
|
+
* available. Must be called after `program.parseAsync()` so it never delays
|
|
10
|
+
* command output. Uses `setImmediate` to yield first, then fires a fetch.
|
|
11
|
+
*/
|
|
12
|
+
export declare function scheduleUpdateCheck(currentVersion: string): void;
|
|
13
|
+
//# sourceMappingURL=update-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-check.d.ts","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8CH;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAsChE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-update checker — fires async after command completion.
|
|
3
|
+
* Checks npm registry for the latest @miosa/cli version once per 24h.
|
|
4
|
+
* Caches the result in ~/.miosa/update-check.json.
|
|
5
|
+
* Never blocks the command; errors are silently swallowed.
|
|
6
|
+
*/
|
|
7
|
+
import { readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
8
|
+
import { homedir } from "node:os";
|
|
9
|
+
import { join } from "node:path";
|
|
10
|
+
import chalk from "chalk";
|
|
11
|
+
const CACHE_PATH = join(homedir(), ".miosa", "update-check.json");
|
|
12
|
+
const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
13
|
+
const REGISTRY_URL = "https://registry.npmjs.org/@miosa/cli/latest";
|
|
14
|
+
function readCache() {
|
|
15
|
+
try {
|
|
16
|
+
const raw = readFileSync(CACHE_PATH, "utf8");
|
|
17
|
+
return JSON.parse(raw);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function writeCache(data) {
|
|
24
|
+
try {
|
|
25
|
+
mkdirSync(join(homedir(), ".miosa"), { recursive: true });
|
|
26
|
+
writeFileSync(CACHE_PATH, JSON.stringify(data), "utf8");
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// Non-fatal — cache write failures are ignored
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function compareVersions(current, latest) {
|
|
33
|
+
const parse = (v) => {
|
|
34
|
+
const parts = v.replace(/^v/, "").split(".").map(Number);
|
|
35
|
+
return [parts[0] ?? 0, parts[1] ?? 0, parts[2] ?? 0];
|
|
36
|
+
};
|
|
37
|
+
const [cMaj, cMin, cPat] = parse(current);
|
|
38
|
+
const [lMaj, lMin, lPat] = parse(latest);
|
|
39
|
+
if (lMaj !== cMaj)
|
|
40
|
+
return lMaj > cMaj;
|
|
41
|
+
if (lMin !== cMin)
|
|
42
|
+
return lMin > cMin;
|
|
43
|
+
return lPat > cPat;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Schedule an async update check that prints a notice if a newer version is
|
|
47
|
+
* available. Must be called after `program.parseAsync()` so it never delays
|
|
48
|
+
* command output. Uses `setImmediate` to yield first, then fires a fetch.
|
|
49
|
+
*/
|
|
50
|
+
export function scheduleUpdateCheck(currentVersion) {
|
|
51
|
+
setImmediate(() => {
|
|
52
|
+
void (async () => {
|
|
53
|
+
try {
|
|
54
|
+
const cache = readCache();
|
|
55
|
+
const now = Date.now();
|
|
56
|
+
// Use cached result if still fresh
|
|
57
|
+
if (cache && now - cache.checkedAt < CACHE_TTL_MS) {
|
|
58
|
+
if (compareVersions(currentVersion, cache.latestVersion)) {
|
|
59
|
+
printNotice(currentVersion, cache.latestVersion);
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// Fetch latest from npm — 3 second timeout so this never hangs
|
|
64
|
+
const ac = new AbortController();
|
|
65
|
+
const timer = setTimeout(() => ac.abort(), 3_000);
|
|
66
|
+
let latestVersion;
|
|
67
|
+
try {
|
|
68
|
+
const resp = await fetch(REGISTRY_URL, { signal: ac.signal });
|
|
69
|
+
if (!resp.ok)
|
|
70
|
+
return;
|
|
71
|
+
const json = (await resp.json());
|
|
72
|
+
latestVersion = json.version;
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
clearTimeout(timer);
|
|
76
|
+
}
|
|
77
|
+
writeCache({ checkedAt: now, latestVersion });
|
|
78
|
+
if (compareVersions(currentVersion, latestVersion)) {
|
|
79
|
+
printNotice(currentVersion, latestVersion);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
// Never surface update-check errors to the user
|
|
84
|
+
}
|
|
85
|
+
})();
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
function printNotice(current, latest) {
|
|
89
|
+
console.error(chalk.yellow(`Update available: ${current} → ${latest}. Run \`npm update -g @miosa/cli\` to update.`));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=update-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@miosa/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "MIOSA platform CLI — projects, sandboxes, deploys, databases, more",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
},
|
|
20
20
|
"files": [
|
|
21
21
|
"dist",
|
|
22
|
-
"README.md"
|
|
22
|
+
"README.md",
|
|
23
|
+
"CHANGELOG.md"
|
|
23
24
|
],
|
|
24
25
|
"keywords": [
|
|
25
26
|
"miosa",
|