Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

examples: migrate with-elasticsearch to TypeScript #44842

Merged
merged 4 commits into from Jun 15, 2023
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
9 changes: 8 additions & 1 deletion examples/with-elasticsearch/package.json
Expand Up @@ -7,9 +7,16 @@
"lint": "next lint"
},
"dependencies": {
"@elastic/elasticsearch": "^8.1.0",
"@elastic/elasticsearch": "^8.6.0",
"@next/font": "latest",
balazsorban44 marked this conversation as resolved.
Show resolved Hide resolved
"next": "latest",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"@types/node": "^18.11.18",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.10",
"typescript": "^4.8.2"
}
}
7 changes: 0 additions & 7 deletions examples/with-elasticsearch/pages/_app.js

This file was deleted.

6 changes: 6 additions & 0 deletions examples/with-elasticsearch/pages/_app.tsx
@@ -0,0 +1,6 @@
import type { AppProps } from 'next/app'
import '@/styles/globals.css'

export default function App({ Component, pageProps }: AppProps) {
return <Component {...pageProps} />
}
92 changes: 0 additions & 92 deletions examples/with-elasticsearch/pages/index.js

This file was deleted.

158 changes: 158 additions & 0 deletions examples/with-elasticsearch/pages/index.tsx
@@ -0,0 +1,158 @@
import type { InferGetServerSidePropsType } from 'next'
import Head from 'next/head'
import Image from 'next/image'
import styles from '@/styles/Home.module.css'
import { Inter } from '@next/font/google'
balazsorban44 marked this conversation as resolved.
Show resolved Hide resolved
import { connectToElasticsearch } from '@/lib/elasticsearch'

const inter = Inter({ subsets: ['latin'] })

type HomePageProps = InferGetServerSidePropsType<typeof getServerSideProps>

export default function Home({ isConnected }: HomePageProps) {
const connectionStatus = isConnected ? (
<p>You are connected to Elasticsearch</p>
) : (
<p>
You are NOT connected to Elasticsearch. Check the{' '}
<code className={styles.code}>README.md</code> for instructions.
</p>
)

return (
<>
<Head>
<title>Create Next App</title>
<meta name="description" content="Generated by create next app" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" href="/favicon.ico" />
</Head>
<main className={styles.main}>
<div className={styles.description}>
<p>
Get started by editing&nbsp;
<code className={styles.code}>pages/index.tsx</code>
</p>
<div>
<a
href="https://vercel.com?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
target="_blank"
rel="noopener noreferrer"
>
By{' '}
<Image
src="/vercel.svg"
alt="Vercel Logo"
className={styles.vercelLogo}
width={100}
height={24}
priority
/>
</a>
</div>
</div>

<div className={styles.center} style={{ paddingBottom: 0 }}>
<Image
className={styles.logo}
src="/next.svg"
alt="Next.js Logo"
width={180}
height={37}
priority
/>
<div className={styles.thirteen}>
<Image
src="/thirteen.svg"
alt="13"
width={40}
height={31}
priority
/>
</div>
</div>

<div
className={`${styles.center} ${inter.className}`}
style={{ paddingBlock: 20 }}
>
<h2>with Elasticsearch</h2>
</div>

<div className={`${styles.center} ${styles.status}`}>
{connectionStatus}
</div>

<div className={styles.grid}>
<a
href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
className={styles.card}
target="_blank"
rel="noopener noreferrer"
>
<h2 className={inter.className}>
Docs <span>-&gt;</span>
</h2>
<p className={inter.className}>
Find in-depth information about Next.js features and&nbsp;API.
</p>
</a>

<a
href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
className={styles.card}
target="_blank"
rel="noopener noreferrer"
>
<h2 className={inter.className}>
Learn <span>-&gt;</span>
</h2>
<p className={inter.className}>
Learn about Next.js in an interactive course with&nbsp;quizzes!
</p>
</a>

<a
href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
className={styles.card}
target="_blank"
rel="noopener noreferrer"
>
<h2 className={inter.className}>
Templates <span>-&gt;</span>
</h2>
<p className={inter.className}>
Discover and deploy boilerplate example Next.js&nbsp;projects.
</p>
</a>

<a
href="https://vercel.com/new?utm_source=create-next-app&utm_medium=default-template&utm_campaign=create-next-app"
className={styles.card}
target="_blank"
rel="noopener noreferrer"
>
<h2 className={inter.className}>
Deploy <span>-&gt;</span>
</h2>
<p className={inter.className}>
Instantly deploy your Next.js site to a shareable URL
with&nbsp;Vercel.
</p>
</a>
</div>
</main>
</>
)
}

export const getServerSideProps = async () => {
let isConnected: boolean = false
const client = await connectToElasticsearch()
if (client !== 'ERR_ENV_NOT_DEFINED') {
isConnected = true
}
return {
props: { isConnected },
}
}
Binary file modified examples/with-elasticsearch/public/favicon.ico
Binary file not shown.
1 change: 1 addition & 0 deletions examples/with-elasticsearch/public/next.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions examples/with-elasticsearch/public/thirteen.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 1 addition & 4 deletions examples/with-elasticsearch/public/vercel.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.