Skip to content

Commit e2b9966

Browse files
committed
chore: prepare better playground
1 parent be94325 commit e2b9966

9 files changed

+127
-158
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"testcontainers": "^10.17.2",
3838
"ts-node": "^10.9.2",
3939
"tsup": "^8.3.6",
40+
"tsx": "^4.19.2",
4041
"typescript": "~5.7.3"
4142
},
4243
"prettier": "@julr/tooling-configs/prettier"

playground/package.json

+3-9
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
{
22
"name": "@bentocache/playground",
33
"type": "module",
4-
"private": true,
54
"scripts": {
6-
"start": "cross-env NODE_NO_WARNINGS=1 node --loader ts-node/esm src/index.ts",
7-
"start-server": "cross-env NODE_NO_WARNINGS=1 node --loader ts-node/esm src/server.ts"
5+
"dev": "tsx watch src/index.tsx"
86
},
97
"dependencies": {
10-
"@aws-sdk/client-dynamodb": "^3.741.0",
11-
"@bentocache/plugin-prometheus": "workspace:*",
8+
"@hono/node-server": "^1.13.8",
129
"bentocache": "workspace:*",
10+
"hono": "^4.6.20",
1311
"pino": "^9.6.0"
14-
},
15-
"devDependencies": {
16-
"cross-env": "7.0.3",
17-
"prom-client": "^15.1.3"
1812
}
1913
}

playground/src/cache.ts

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { pino } from 'pino'
2+
import { BentoCache, bentostore } from 'bentocache'
3+
import { redisDriver } from 'bentocache/drivers/redis'
4+
import { memoryDriver } from 'bentocache/drivers/memory'
5+
6+
export const bento = new BentoCache({
7+
default: 'memoryAndRedis',
8+
logger: pino({
9+
level: 'debug',
10+
transport: {
11+
target: 'pino-pretty',
12+
options: { colorize: true },
13+
},
14+
}),
15+
stores: {
16+
memory: bentostore().useL1Layer(memoryDriver({})),
17+
18+
redis: bentostore().useL2Layer(redisDriver({ connection: { host: 'localhost', port: 6379 } })),
19+
20+
memoryAndRedis: bentostore()
21+
.useL1Layer(memoryDriver({}))
22+
.useL2Layer(redisDriver({ connection: { host: 'localhost', port: 6379 } })),
23+
},
24+
})

playground/src/index.ts

-55
This file was deleted.

playground/src/index.tsx

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { Hono } from 'hono'
2+
import { logger } from 'hono/logger'
3+
import { serve } from '@hono/node-server'
4+
import { setTimeout } from 'node:timers/promises'
5+
6+
import { bento } from './cache.js'
7+
8+
const app = new Hono().use(logger())
9+
10+
const slowFetcher = async (url: string, timeout: number = 1000) => {
11+
await setTimeout(timeout)
12+
return fetch(url).then((response) => response.json())
13+
}
14+
15+
app.get('/cache-user/:id', async (c) => {
16+
const id = c.req.param('id')
17+
const user = await slowFetcher(`https://jsonplaceholder.typicode.com/users/${id}`)
18+
19+
await bento.set({
20+
ttl: '10s',
21+
key: `user-${id}`,
22+
value: user,
23+
})
24+
25+
return c.html(
26+
<div>
27+
<h1>User {id}</h1>
28+
<p>Cached for 10 seconds</p>
29+
<pre>{JSON.stringify(user, null, 2)}</pre>
30+
</div>,
31+
)
32+
})
33+
34+
app.get('/cached-user/:id', async (c) => {
35+
const id = c.req.param('id')
36+
const user = await bento.get({ key: `user-${id}`, defaultValue: 'NOT CACHED' })
37+
38+
return c.html(
39+
<div>
40+
<h1>User {id}</h1>
41+
<p>From cache</p>
42+
<pre>{JSON.stringify(user, null, 2)}</pre>
43+
</div>,
44+
)
45+
})
46+
47+
app.get('/', (c) => {
48+
return c.text('Hello Hono!')
49+
})
50+
51+
const port = 3042
52+
console.log(`Server is running on http://localhost:${port}`)
53+
serve({ fetch: app.fetch, port })

playground/src/prometheus.ts

-50
This file was deleted.

playground/src/server.ts

-33
This file was deleted.

playground/tsconfig.json

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
{
2-
"extends": "@adonisjs/tsconfig/tsconfig.package.json",
32
"compilerOptions": {
4-
"rootDir": "./",
5-
"outDir": "build"
3+
"target": "ESNext",
4+
"jsx": "react-jsx",
5+
"jsxImportSource": "hono/jsx",
6+
"module": "NodeNext",
7+
"types": ["node"],
8+
"strict": true,
9+
"verbatimModuleSyntax": true,
10+
"skipLibCheck": true
611
}
712
}

pnpm-lock.yaml

+38-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)