Compare commits
3 Commits
ea21091792
...
68406a0a80
| Author | SHA1 | Date | |
|---|---|---|---|
| 68406a0a80 | |||
| 1df3f0760e | |||
| 192b0cf88d |
|
|
@ -1,5 +1,5 @@
|
||||||
import { join } from 'path'
|
import { join } from 'path'
|
||||||
import { render as formatHTML } from './html-formatter'
|
import { render as formatHTML } from './lib/html-formatter'
|
||||||
import { type Context, Hono, type Schema, type Env } from 'hono'
|
import { type Context, Hono, type Schema, type Env } from 'hono'
|
||||||
import { serveStatic } from 'hono/bun'
|
import { serveStatic } from 'hono/bun'
|
||||||
import color from 'kleur'
|
import color from 'kleur'
|
||||||
|
|
@ -139,7 +139,6 @@ export class Hype<
|
||||||
const pageName = (c.req.param('page') ?? 'index').replace('.', '')
|
const pageName = (c.req.param('page') ?? 'index').replace('.', '')
|
||||||
if (pageName.startsWith('_')) return render404(c)
|
if (pageName.startsWith('_')) return render404(c)
|
||||||
|
|
||||||
console.log(process.env.PWD)
|
|
||||||
const path = join(process.env.PWD ?? '.', `./src/pages/${pageName}.tsx`)
|
const path = join(process.env.PWD ?? '.', `./src/pages/${pageName}.tsx`)
|
||||||
|
|
||||||
if (!(await Bun.file(path).exists()))
|
if (!(await Bun.file(path).exists()))
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,8 @@ export function css(strings: TemplateStringsArray, ...values: any[]) {
|
||||||
}} />
|
}} />
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const transpiler = new Bun.Transpiler({ loader: 'tsx' })
|
||||||
|
|
||||||
// template literal tag for inline JS. transpiles and returns a <script> tag
|
// template literal tag for inline JS. transpiles and returns a <script> tag
|
||||||
export function js(strings: TemplateStringsArray, ...values: any[]) {
|
export function js(strings: TemplateStringsArray, ...values: any[]) {
|
||||||
return <script dangerouslySetInnerHTML={{
|
return <script dangerouslySetInnerHTML={{
|
||||||
|
|
@ -137,21 +139,25 @@ export function weightedRand(): number {
|
||||||
return numbers[numbers.length - 1]!
|
return numbers[numbers.length - 1]!
|
||||||
}
|
}
|
||||||
|
|
||||||
const transpiler = new Bun.Transpiler({ loader: 'tsx' })
|
|
||||||
const transpileCache: Record<string, string> = {}
|
const transpileCache: Record<string, string> = {}
|
||||||
|
|
||||||
// Transpile the frontend *.ts file at `path` to JavaScript.
|
// transpile frontend ts to js
|
||||||
export async function transpile(path: string): Promise<string> {
|
export async function transpile(path: string): Promise<string> {
|
||||||
const { mtime } = await stat(path)
|
const { mtime } = await stat(path)
|
||||||
const key = `${path}?${mtime}`
|
const key = `${path}?${mtime}`
|
||||||
|
|
||||||
let cached = transpileCache[key]
|
let cached = transpileCache[key]
|
||||||
if (!cached) {
|
if (!cached) {
|
||||||
const code = await Bun.file(path).text()
|
const result = await Bun.build({
|
||||||
cached = transpiler.transformSync(code)
|
entrypoints: [path],
|
||||||
cached = cached.replaceAll(/\bjsxDEV_?\w*\(/g, "jsx(")
|
format: 'esm',
|
||||||
cached = cached.replaceAll(/\bFragment_?\w*,/g, "Fragment,")
|
minify: false,
|
||||||
|
sourcemap: 'none',
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!result.outputs[0]) throw new Error(`Failed to build ${path}`)
|
||||||
|
|
||||||
|
cached = await result.outputs[0].text()
|
||||||
transpileCache[key] = cached
|
transpileCache[key] = cached
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user