Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 0 additions & 24 deletions playgrounds/javascript/.gitignore

This file was deleted.

17 changes: 0 additions & 17 deletions playgrounds/javascript/README.md

This file was deleted.

20 changes: 4 additions & 16 deletions playgrounds/javascript/index.html
Original file line number Diff line number Diff line change
@@ -1,24 +1,12 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta name="theme-color" content="#000000" />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Meilisearch + Vite</title>
</head>
<body>
<h1>Meilisearch + Vite</h1>
<h2 class="errors_title">Errors:</h2>
<div class="errors"></div>

<h2>Movies index:</h2>
<div class="indexes"></div>
<h2>Search response:</h2>
<div class="hits"></div>
<script src="https://cdn.jsdelivr.net/npm/instantsearch.js@4"></script>
<script type="module" src="/src/app.js"></script>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
14 changes: 0 additions & 14 deletions playgrounds/javascript/package.json

This file was deleted.

51 changes: 0 additions & 51 deletions playgrounds/javascript/src/app.css

This file was deleted.

60 changes: 0 additions & 60 deletions playgrounds/javascript/src/app.js

This file was deleted.

41 changes: 41 additions & 0 deletions playgrounds/javascript/src/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import "./style.css";
import { addDocuments, getAllHits, getSearchResponse } from "./meilisearch.js";

document.querySelector<HTMLDivElement>("#app")!.innerHTML = `
<div>
<h1>Meilisearch + Vite</h1>

<h2>Documents:</h2>
<div id="hits" style="white-space: break-spaces"> - </div>

<h2>Search response:</h2>
<div id="response" style="white-space: break-spaces"> - </div>

<h2>Errors:</h2>
<div id="errors">None</div>
</div>
`;

function getErrorMessage(error: unknown): string {
if (!(error instanceof Error)) {
return JSON.stringify(error);
}

const message = String(error);

if (error.cause === undefined) {
return message;
}

return `${message}\nCaused by ${getErrorMessage(error.cause)}`;
}

try {
await addDocuments();
await getAllHits(document.querySelector<HTMLDivElement>("#hits")!);
await getSearchResponse(document.querySelector<HTMLDivElement>("#response")!);
} catch (error) {
console.error(error);
document.querySelector<HTMLDivElement>("#errors")!.innerText =
getErrorMessage(error);
}
49 changes: 49 additions & 0 deletions playgrounds/javascript/src/meilisearch.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { Index, Meilisearch } from "../../../src/index.js";

const client = new Meilisearch({
host: "http://127.0.0.1:7700",
apiKey: "masterKey",
});
const indexUid = "movies";
const index = client.index<{ id: number; title: string; genres: string[] }>(
indexUid,
);

export async function addDocuments(): Promise<void> {
await client.deleteIndexIfExists(indexUid);

const task1 = await client.createIndex(indexUid);
await client.waitForTask(task1.taskUid);

const task2 = await index.addDocuments([
{ id: 1, title: "Carol", genres: ["Romance", "Drama"] },
{ id: 2, title: "Wonder Woman", genres: ["Action", "Adventure"] },
{ id: 3, title: "Life of Pi", genres: ["Adventure", "Drama"] },
{
id: 4,
title: "Mad Max: Fury Road",
genres: ["Adventure", "Science Fiction"],
},
{ id: 5, title: "Moana", genres: ["Fantasy", "Action"] },
{ id: 6, title: "Philadelphia", genres: ["Drama"] },
]);

await client.index(indexUid).waitForTask(task2.taskUid);
}

export async function getAllHits(element: HTMLDivElement): Promise<void> {
const documents = await index.getDocuments();

element.innerText = JSON.stringify(documents, null, 4);
}

export async function getSearchResponse(element: HTMLDivElement) {
const params: Parameters<Index["search"]> = [
"philoudelphia",
{ attributesToHighlight: ["title"] },
];

const response = await client.index(indexUid).search(...params);

element.innerText = `PARAMETERS: ${JSON.stringify(params, null, 4)}\nRESPONSE: ${JSON.stringify(response, null, 4)}`;
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
body,
h1 {
margin: 0;
padding: 0;
}

body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica,
Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
Expand Down
1 change: 1 addition & 0 deletions playgrounds/javascript/src/vite-env.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/// <reference types="vite/client" />
Loading
Loading