@devlusoft/devix 0.2.0 → 0.2.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/dist/cli/build.js +30 -308
- package/dist/cli/build.js.map +3 -3
- package/dist/cli/dev.js +32 -395
- package/dist/cli/dev.js.map +3 -3
- package/dist/cli/generate.js +30 -434
- package/dist/cli/generate.js.map +3 -3
- package/dist/cli/index.js +33 -698
- package/dist/cli/index.js.map +3 -3
- package/dist/cli/start.js +1 -89
- package/dist/cli/start.js.map +2 -2
- package/dist/config.js +1 -16
- package/dist/config.js.map +2 -2
- package/dist/runtime/api-context.js +1 -17
- package/dist/runtime/api-context.js.map +2 -2
- package/dist/runtime/client-router.js +1 -58
- package/dist/runtime/client-router.js.map +2 -2
- package/dist/runtime/context.js +1 -14
- package/dist/runtime/context.js.map +2 -2
- package/dist/runtime/error-boundary.js +1 -36
- package/dist/runtime/error-boundary.js.map +2 -2
- package/dist/runtime/fetch.js +1 -34
- package/dist/runtime/fetch.js.map +2 -2
- package/dist/runtime/head.js +1 -68
- package/dist/runtime/head.js.map +2 -2
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.js +1 -367
- package/dist/runtime/index.js.map +3 -3
- package/dist/runtime/link.js +1 -42
- package/dist/runtime/link.js.map +2 -2
- package/dist/runtime/metadata.js +1 -21
- package/dist/runtime/metadata.js.map +2 -2
- package/dist/runtime/router-provider.js +1 -258
- package/dist/runtime/router-provider.js.map +2 -2
- package/dist/server/api-router.js +1 -64
- package/dist/server/api-router.js.map +2 -2
- package/dist/server/api.js +1 -123
- package/dist/server/api.js.map +2 -2
- package/dist/server/collect-css.js +1 -14
- package/dist/server/collect-css.js.map +2 -2
- package/dist/server/index.js +1 -132
- package/dist/server/index.js.map +2 -2
- package/dist/server/pages-router.js +1 -63
- package/dist/server/pages-router.js.map +2 -2
- package/dist/server/render.js +1 -305
- package/dist/server/render.js.map +2 -2
- package/dist/server/routes.js +1 -41
- package/dist/server/routes.js.map +2 -2
- package/dist/utils/async.js +1 -13
- package/dist/utils/async.js.map +2 -2
- package/dist/utils/banner.js +1 -33
- package/dist/utils/banner.js.map +2 -2
- package/dist/utils/cookies.js +1 -28
- package/dist/utils/cookies.js.map +2 -2
- package/dist/utils/duration.js +1 -21
- package/dist/utils/duration.js.map +2 -2
- package/dist/utils/env.js +1 -13
- package/dist/utils/env.js.map +2 -2
- package/dist/utils/html.js +1 -11
- package/dist/utils/html.js.map +2 -2
- package/dist/utils/patterns.js +1 -7
- package/dist/utils/patterns.js.map +2 -2
- package/dist/utils/response.d.ts +4 -1
- package/dist/utils/response.js +1 -9
- package/dist/utils/response.js.map +3 -3
- package/dist/vite/codegen/api.js +6 -12
- package/dist/vite/codegen/api.js.map +2 -2
- package/dist/vite/codegen/client-routes.js +6 -12
- package/dist/vite/codegen/client-routes.js.map +2 -2
- package/dist/vite/codegen/context.js +2 -8
- package/dist/vite/codegen/context.js.map +2 -2
- package/dist/vite/codegen/entry-client.js +4 -10
- package/dist/vite/codegen/entry-client.js.map +2 -2
- package/dist/vite/codegen/extract-methods.js +1 -15
- package/dist/vite/codegen/extract-methods.js.map +2 -2
- package/dist/vite/codegen/render.js +6 -12
- package/dist/vite/codegen/render.js.map +2 -2
- package/dist/vite/codegen/routes-dts.js +11 -49
- package/dist/vite/codegen/routes-dts.js.map +3 -3
- package/dist/vite/codegen/scan-api.js +1 -77
- package/dist/vite/codegen/scan-api.js.map +3 -3
- package/dist/vite/codegen/write-routes-dts.js +1 -16
- package/dist/vite/codegen/write-routes-dts.js.map +2 -2
- package/dist/vite/index.js +30 -247
- package/dist/vite/index.js.map +3 -3
- package/package.json +2 -2
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/server/render.tsx", "../../src/runtime/head.tsx", "../../src/utils/patterns.ts", "../../src/server/pages-router.ts", "../../src/runtime/metadata.ts", "../../src/runtime/context.tsx", "../../src/utils/html.ts", "../../src/utils/async.ts"],
|
|
4
4
|
"sourcesContent": ["import {ComponentType, createElement, ReactElement} from 'react'\nimport {renderToString, renderToStaticMarkup} from 'react-dom/server'\nimport {buildHeadNodes} from '../runtime/head'\nimport {buildPages, matchPage, collectLayoutChain} from './pages-router'\nimport {resolveMetadata, mergeMetadata} from '../runtime/metadata'\nimport {RouteDataContext} from '../runtime/context'\nimport type {PageModule, LayoutModule, PageGlob} from './types'\nimport type {Manifest} from \"vite\";\nimport {escapeAttr, safeJsonStringify} from \"../utils/html\";\nimport {withTimeout} from \"../utils/async\";\n\nconst DEV_CLIENT_ENTRY = '/@id/virtual:devix/entry-client'\n\nasync function resolvePageData(pathname: string, request: Request, glob: PageGlob, timeout: number) {\n const {pages, layouts} = buildPages(Object.keys(glob.pages), Object.keys(glob.layouts), glob.pagesDir)\n const matched = matchPage(pathname, pages)\n if (!matched) return null\n\n const {page, params} = matched\n const layoutChain = collectLayoutChain(page.key, layouts)\n const ctx = {params, request}\n\n const pageMod = await glob.pages[page.key]() as PageModule\n\n if (pageMod.guard) {\n const redirect = await pageMod.guard(ctx)\n if (redirect) return {redirect}\n }\n\n const loaderData = pageMod.loader\n ? await withTimeout(pageMod.loader(ctx) as Promise<unknown>, timeout)\n : null\n\n const layoutMods = await Promise.all(\n layoutChain.map(l => glob.layouts[l.key]() as Promise<LayoutModule>)\n )\n const layoutsData = await withTimeout(\n Promise.all(layoutMods.map(mod => mod.loader ? mod.loader(ctx) : null)),\n timeout\n )\n\n const pageMeta = await resolveMetadata(pageMod, {...ctx, loaderData})\n const layoutsMeta = await Promise.all(\n layoutMods.map((mod, i) => resolveMetadata(mod, {...ctx, loaderData: layoutsData[i]}))\n )\n\n const metadata = mergeMetadata(...layoutsMeta.map(m => m.metadata), pageMeta.metadata)\n const viewport = pageMeta.viewport ?? layoutsMeta.findLast(m => m.viewport)?.viewport\n\n const rootLayoutMod = layoutMods[0]\n const lang = rootLayoutMod?.generateLang\n ? await rootLayoutMod.generateLang({...ctx, loaderData})\n : rootLayoutMod?.lang ?? 'en'\n\n return {pageMod, layoutMods, params, loaderData, layoutsData, metadata, viewport, lang}\n}\n\nexport async function runLoader(url: string, request: Request, glob: PageGlob, options?: { loaderTimeout?: number }) {\n const {pathname} = new URL(url, 'http://localhost')\n let result: Awaited<ReturnType<typeof resolvePageData>>\n try {\n const timeout = options?.loaderTimeout ?? 10_000\n result = await resolvePageData(pathname, request, glob, timeout)\n } catch (err) {\n console.error('[devix] render error:', err)\n return {loaderData: null, params: {}, layouts: [], metadata: null, viewport: undefined}\n }\n\n if (!result || 'redirect' in result) {\n return {loaderData: null, params: {}, layouts: [], metadata: null, viewport: undefined}\n }\n\n const {loaderData, params, layoutsData, metadata, viewport} = result\n return {\n loaderData,\n params,\n layouts: layoutsData.map(loaderData => ({loaderData})),\n metadata,\n viewport,\n }\n}\n\nexport async function render(\n url: string,\n request: Request,\n glob: PageGlob,\n options?: { manifest?: Manifest, loaderTimeout?: number },\n) {\n const clientEntry = options?.manifest\n ? `/${Object.values(options.manifest).find(chunk => chunk.isEntry)?.file}`\n : DEV_CLIENT_ENTRY\n\n const cssFiles = options?.manifest\n ? (Object.values(options.manifest).find(chunk => chunk.isEntry)?.css ?? [])\n : []\n const cssLinks = cssFiles.map(f => `<link rel=\"stylesheet\" href=\"/${f}\">`).join('')\n\n const {pathname} = new URL(url, 'http://localhost')\n\n let result: Awaited<ReturnType<typeof resolvePageData>>\n try {\n const timeout = options?.loaderTimeout ?? 10_000\n result = await resolvePageData(pathname, request, glob, timeout)\n } catch (err) {\n console.error('[devix] render error:', err)\n const html = `<html lang=\"en\"><head><meta charset=\"utf-8\">${cssLinks}</head><body><script>window.__DEVIX__=null;window.__LOADER_DATA__=null;window.__LAYOUTS_DATA__=[];</script><script type=\"module\" src=\"${clientEntry}\"></script><div id=\"devix-root\"></div></body></html>`\n return {html, statusCode: 500, headers: {}}\n }\n\n if (!result) {\n const dataScript = `<script>window.__DEVIX__=${safeJsonStringify({\n metadata: null,\n viewport: undefined,\n clientEntry\n })};window.__LOADER_DATA__=null;window.__LAYOUTS_DATA__=[];</script>`\n const clientScript = `<script type=\"module\" src=\"${clientEntry}\"></script>`\n const html = `<html lang=\"en\"><head><meta charset=\"utf-8\">${cssLinks}${dataScript}</head><body><div id=\"devix-root\"></div>${clientScript}</body></html>`\n return {html, statusCode: 404, headers: {}}\n }\n\n if ('redirect' in result) {\n return {html: '', statusCode: 302, headers: {Location: result.redirect}}\n }\n\n const {pageMod, layoutMods, params, loaderData, layoutsData, metadata, viewport, lang} = result\n\n let tree: ReactElement = createElement(\n RouteDataContext as any,\n {value: {loaderData, params}},\n createElement(pageMod.default, {data: loaderData, params, url: pathname})\n )\n\n for (let i = layoutMods.length - 1; i >= 0; i--) {\n const layoutData = layoutsData[i]\n tree = createElement(\n RouteDataContext as any,\n {value: {loaderData: layoutData, params}},\n createElement(layoutMods[i].default as ComponentType<any>, {data: layoutData, params}, tree),\n )\n }\n\n const content = renderToString(tree)\n const headTags = metadata ? renderToStaticMarkup(buildHeadNodes(metadata, viewport) as any) : ''\n\n const dataScript = `<script>window.__DEVIX__=${safeJsonStringify({\n metadata,\n viewport,\n clientEntry\n })};window.__LOADER_DATA__=${safeJsonStringify(loaderData)};window.__LAYOUTS_DATA__=${safeJsonStringify(layoutsData)};</script>`\n const clientScript = `<script type=\"module\" src=\"${clientEntry}\"></script>`\n const customHeaders: Record<string, string> = pageMod.headers ?? {}\n\n const html = `<html lang=\"${escapeAttr(lang)}\"><head><meta charset=\"utf-8\">${headTags}${cssLinks}${dataScript}</head><body><div id=\"devix-root\">${content}</div>${clientScript}</body></html>`\n\n return {html, statusCode: 200, headers: customHeaders}\n}\n\nexport async function getStaticRoutes(glob: PageGlob): Promise<string[]> {\n const {pages} = buildPages(Object.keys(glob.pages), Object.keys(glob.layouts), glob.pagesDir)\n const urls: string[] = []\n\n for (const page of pages) {\n if (page.params.length === 0) {\n urls.push(page.path)\n } else {\n const mod = await glob.pages[page.key]() as PageModule\n if (!mod.generateStaticParams) continue\n const paramSets = await mod.generateStaticParams()\n for (const params of paramSets) {\n let url = page.path\n for (const [key, value] of Object.entries(params)) {\n url = url.replace(`:${key}`, encodeURIComponent(value))\n }\n urls.push(url)\n }\n }\n }\n\n return urls\n}\n\n", "import {Metadata, Viewport} from \"../types\";\nimport {ReactNode} from \"react\";\n\ntype MetaTag =\n | { tag: 'title'; children: string }\n | { tag: 'meta'; name?: string; property?: string; content: string }\n | { tag: 'link'; rel: string; href: string; hrefLang?: string }\n\nfunction collectTags(metadata: Metadata, viewport?: Viewport): MetaTag[] {\n const tags: MetaTag[] = []\n\n if (metadata.title)\n tags.push({tag: 'title', children: metadata.title})\n if (metadata.description)\n tags.push({tag: 'meta', name: 'description', content: metadata.description})\n if (metadata.keywords?.length)\n tags.push({tag: 'meta', name: 'keywords', content: metadata.keywords.join(', ')})\n\n const ogTitle = metadata.og?.title ?? metadata.title\n if (ogTitle) tags.push({tag: 'meta', property: 'og:title', content: ogTitle})\n const ogDesc = metadata.og?.description ?? metadata.description\n if (ogDesc) tags.push({tag: 'meta', property: 'og:description', content: ogDesc})\n if (metadata.og?.image) tags.push({tag: 'meta', property: 'og:image', content: metadata.og.image})\n if (metadata.og?.type) tags.push({tag: 'meta', property: 'og:type', content: metadata.og.type})\n if (metadata.og?.url) tags.push({tag: 'meta', property: 'og:url', content: metadata.og.url})\n\n const twTitle = metadata.twitter?.title ?? metadata.title\n if (twTitle) tags.push({tag: 'meta', name: 'twitter:title', content: twTitle})\n const twDesc = metadata.twitter?.description ?? metadata.description\n if (twDesc) tags.push({tag: 'meta', name: 'twitter:description', content: twDesc})\n if (metadata.twitter?.card) tags.push({\n tag: 'meta', name: 'twitter:card', content:\n metadata.twitter.card\n })\n if (metadata.twitter?.image) tags.push({\n tag: 'meta', name: 'twitter:image', content:\n metadata.twitter.image\n })\n if (metadata.twitter?.creator) tags.push({\n tag: 'meta', name: 'twitter:creator', content:\n metadata.twitter.creator\n })\n\n if (metadata.canonical) tags.push({tag: 'link', rel: 'canonical', href: metadata.canonical})\n if (metadata.robots) tags.push({tag: 'meta', name: 'robots', content: metadata.robots})\n if (metadata.alternates) {\n for (const [lang, href] of Object.entries(metadata.alternates))\n tags.push({tag: 'link', rel: 'alternate', href, hrefLang: lang})\n }\n\n if (viewport) {\n const parts: string[] = []\n if (viewport.width !== undefined) parts.push(`width=${viewport.width}`)\n if (viewport.initialScale !== undefined) parts.push(`initial-scale=${viewport.initialScale}`)\n if (viewport.maximumScale !== undefined) parts.push(`maximum-scale=${viewport.maximumScale}`)\n if (viewport.userScalable !== undefined) parts.push(`user-scalable=${viewport.userScalable ? 'yes' :\n 'no'}`)\n if (parts.length) tags.push({tag: 'meta', name: 'viewport', content: parts.join(', ')})\n if (viewport.themeColor) tags.push({\n tag: 'meta', name: 'theme-color', content: viewport.themeColor\n })\n }\n\n return tags\n}\n\nexport function buildHeadNodes(metadata: Metadata, viewport?: Viewport): ReactNode {\n const tags = collectTags(metadata, viewport)\n\n return <>\n {tags.map((t, i) => {\n if (t.tag === 'title') return <title key={i}>{t.children}</title>\n if (t.tag === 'link') return <link key={i} rel={t.rel} href={t.href} hrefLang={t.hrefLang}/>\n return <meta key={i} name={t.name} property={t.property} content={t.content}/>\n })}\n </>\n}", "export function routePattern(rel: string): string {\n return rel\n .replace(/\\.(tsx|ts|jsx|js)$/, '')\n .replace(/\\(.*?\\)\\//g, '')\n .replace(/^index$|\\/index$/, '')\n .replace(/\\[([^\\]]+)]/g, ':$1')\n || '/'\n}", "import {routePattern} from \"../utils/patterns\";\n\nexport interface Page {\n path: string\n key: string\n params: string[]\n regex: RegExp\n}\n\nexport interface Layout {\n dir: string\n key: string\n}\n\nexport interface PagesResult {\n pages: Page[]\n layouts: Layout[]\n}\n\nfunction keyToRoutePattern(key: string, pagesDir: string): string {\n const rel = key.slice(pagesDir.length + 1).replace(/\\\\/g, '/')\n const pattern = routePattern(rel)\n return pattern === \"/\" ? \"/\" : `/${pattern}`\n}\n\nfunction keyToDir(key: string): string {\n return key.slice(0, key.lastIndexOf('/'))\n}\n\nlet cache: PagesResult | null = null\n\nexport function invalidatePagesCache() {\n cache = null\n}\n\nexport function buildPages(pageKeys: string[], layoutKeys: string[], pagesDir: string): PagesResult {\n if (cache) return cache\n\n const pages: Page[] = []\n const layouts: Layout[] = []\n\n for (const key of layoutKeys) {\n layouts.push({dir: keyToDir(key), key})\n }\n\n for (const key of pageKeys) {\n const pattern = keyToRoutePattern(key, pagesDir)\n const params = [...pattern.matchAll(/:([^/]+)/g)].map(m => m[1])\n const regexStr = pattern\n .replace(/:[^/]+/g, '([^/]+)')\n .replace(/\\//g, '\\\\/')\n pages.push({path: pattern, key, params, regex: new RegExp(`^${regexStr}$`)})\n }\n\n pages.sort((a, b) => {\n const aScore = (a.path.match(/:/g) || []).length\n const bScore = (b.path.match(/:/g) || []).length\n if (aScore !== bScore) return aScore - bScore\n return b.path.length - a.path.length\n })\n\n cache = {pages, layouts}\n return cache\n}\n\nexport function collectLayoutChain(pageKey: string, layouts: Layout[]): Layout[] {\n const pageDir = keyToDir(pageKey)\n\n return layouts\n .filter(layout => pageDir.startsWith(layout.dir))\n .sort((a, b) => a.dir.split('/').length - b.dir.split('/').length)\n}\n\nexport function matchPage(pathname: string, pages: Page[]): {\n page: Page\n params: Record<string, string>\n} | null {\n for (const page of pages) {\n const match = pathname.match(page.regex)\n if (match) {\n const params: Record<string, string> = {}\n page.params.forEach((name, i) => {\n params[name] = decodeURIComponent(match[i + 1])\n })\n return {page, params}\n }\n }\n return null\n}\n", "import {LayoutModule, PageModule} from \"../server\";\nimport {LoaderContext, Metadata, Viewport} from \"../types\"\n\nexport interface ResolvedMeta {\n metadata: Metadata\n viewport?: Viewport\n}\n\nexport async function resolveMetadata(module: PageModule | LayoutModule, ctx: LoaderContext & {\n loaderData: unknown\n}): Promise<ResolvedMeta> {\n const metadata = module.generateMetadata\n ? await module.generateMetadata(ctx)\n : module.metadata ?? {}\n\n const viewport = module.generateViewport\n ? await module.generateViewport(ctx)\n : module.viewport\n\n return {metadata, viewport}\n}\n\nexport function mergeMetadata(...sources: (Metadata | null | undefined)[]): Metadata {\n const result: Metadata = {}\n\n for (const source of sources) {\n if (!source) continue\n const { og, twitter, ...rest } = source\n Object.assign(result, rest)\n if (og) result.og = { ...result.og, ...og }\n if (twitter) result.twitter = { ...result.twitter, ...twitter }\n }\n\n return result\n}", "import {createContext, Context, ComponentType} from \"react\";\nimport {Metadata, Viewport} from \"../types\";\nimport {LayoutProps, PageProps} from \"../server/types\";\n\nexport interface RouterContextValue {\n pathname: string\n params: Record<string, string>\n loaderData: unknown\n layoutsData: unknown[]\n Page: ComponentType<PageProps>\n layouts: ComponentType<LayoutProps>[]\n metadata: Metadata | null\n viewport?: Viewport\n navigate: (to: string) => void\n isNavigating: boolean\n}\n\nexport interface PageMetaContextValue {\n metadata: Metadata | null\n viewport?: Viewport\n clientEntry?: string\n}\n\nexport interface RouteDataContextValue {\n loaderData: unknown\n params: Record<string, string>\n}\n\nconst g = globalThis as any\n\ng.__devix_RouterContext__ ??= createContext<RouterContextValue | null>(null)\nexport const RouterContext: Context<RouterContextValue | null> = g.__devix_RouterContext__\n\ng.__devix_PageMetaContext__ ??= createContext<PageMetaContextValue | null>(null)\ng.__devix_RouteDataContext__ ??= createContext<RouteDataContextValue | null>(null)\n\nexport const PageMetaContext: Context<PageMetaContextValue | null> = g.__devix_PageMetaContext__\nexport const RouteDataContext: Context<RouteDataContextValue | null> = g.__devix_RouteDataContext__\n\n", "export function safeJsonStringify(value: unknown): string {\n return JSON.stringify(value).replace(/<\\/script>/gi, '<\\\\/script>')\n}\n\nexport function escapeAttr(value: string): string {\n return value.replace(/\"/g, '"')\n}", "export function withTimeout<T>(promise: Promise<T>, ms: number): Promise<T> {\n let timer: ReturnType<typeof setTimeout>\n return Promise.race([\n promise.finally(() => clearTimeout(timer)),\n new Promise<never>((_, reject) => {\n timer = setTimeout(() => reject(new Error(`timed out after ${ms}ms`)), ms)\n })\n ])\n}"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["loaderData", "
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["createElement", "renderToString", "renderToStaticMarkup", "Fragment", "jsx", "collectTags", "metadata", "viewport", "tags", "ogTitle", "ogDesc", "twTitle", "twDesc", "lang", "href", "parts", "buildHeadNodes", "t", "i", "routePattern", "rel", "keyToRoutePattern", "key", "pagesDir", "rel", "pattern", "routePattern", "keyToDir", "cache", "buildPages", "pageKeys", "layoutKeys", "pagesDir", "cache", "pages", "layouts", "key", "keyToDir", "pattern", "keyToRoutePattern", "params", "m", "regexStr", "a", "b", "aScore", "bScore", "collectLayoutChain", "pageKey", "pageDir", "layout", "matchPage", "pathname", "page", "match", "name", "i", "resolveMetadata", "module", "ctx", "metadata", "viewport", "mergeMetadata", "sources", "result", "source", "og", "twitter", "rest", "createContext", "g", "RouterContext", "PageMetaContext", "RouteDataContext", "safeJsonStringify", "value", "escapeAttr", "withTimeout", "promise", "ms", "timer", "_", "reject", "DEV_CLIENT_ENTRY", "resolvePageData", "pathname", "request", "glob", "timeout", "pages", "layouts", "buildPages", "matched", "matchPage", "page", "params", "layoutChain", "collectLayoutChain", "ctx", "pageMod", "redirect", "loaderData", "withTimeout", "layoutMods", "l", "layoutsData", "mod", "pageMeta", "resolveMetadata", "layoutsMeta", "i", "metadata", "mergeMetadata", "m", "viewport", "rootLayoutMod", "lang", "runLoader", "url", "options", "result", "err", "render", "clientEntry", "chunk", "cssLinks", "f", "dataScript", "safeJsonStringify", "clientScript", "tree", "createElement", "RouteDataContext", "layoutData", "content", "renderToString", "headTags", "renderToStaticMarkup", "buildHeadNodes", "customHeaders", "escapeAttr", "getStaticRoutes", "urls", "paramSets", "key", "value"]
|
|
7
7
|
}
|
package/dist/server/routes.js
CHANGED
|
@@ -1,42 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
function registerApiRoutes(app, { apiModule, renderModule, loaderTimeout }) {
|
|
3
|
-
app.all("/api/*", async (c) => {
|
|
4
|
-
try {
|
|
5
|
-
return await apiModule.handleApiRequest(c.req.url, c.req.raw);
|
|
6
|
-
} catch (e) {
|
|
7
|
-
console.error(e);
|
|
8
|
-
return c.json({ error: "internal error" }, 500);
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
app.get("/_data/*", async (c) => {
|
|
12
|
-
try {
|
|
13
|
-
const { pathname, search } = new URL(c.req.url, "http://localhost");
|
|
14
|
-
const url = pathname.replace(/^\/_data/, "") + search;
|
|
15
|
-
const data = await renderModule.runLoader(url, c.req.raw, { loaderTimeout });
|
|
16
|
-
return c.json(data);
|
|
17
|
-
} catch (e) {
|
|
18
|
-
console.error(e);
|
|
19
|
-
return c.json({ error: "internal error" }, 500);
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
function registerSsrRoute(app, { renderModule, manifest, loaderTimeout }) {
|
|
24
|
-
app.get("*", async (c) => {
|
|
25
|
-
try {
|
|
26
|
-
const { html, statusCode, headers } = await renderModule.render(c.req.url, c.req.raw, { manifest, loaderTimeout });
|
|
27
|
-
const res = c.html(`<!DOCTYPE html>${html}`, statusCode);
|
|
28
|
-
for (const [key, value] of Object.entries(headers)) {
|
|
29
|
-
res.headers.set(key, value);
|
|
30
|
-
}
|
|
31
|
-
return res;
|
|
32
|
-
} catch (e) {
|
|
33
|
-
console.error(e);
|
|
34
|
-
return c.text("Internal Server Error", 500);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
export {
|
|
39
|
-
registerApiRoutes,
|
|
40
|
-
registerSsrRoute
|
|
41
|
-
};
|
|
1
|
+
function d(t,{apiModule:n,renderModule:a,loaderTimeout:s}){t.all("/api/*",async r=>{try{return await n.handleApiRequest(r.req.url,r.req.raw)}catch(e){return console.error(e),r.json({error:"internal error"},500)}}),t.get("/_data/*",async r=>{try{let{pathname:e,search:i}=new URL(r.req.url,"http://localhost"),l=e.replace(/^\/_data/,"")+i,o=await a.runLoader(l,r.req.raw,{loaderTimeout:s});return r.json(o)}catch(e){return console.error(e),r.json({error:"internal error"},500)}})}function h(t,{renderModule:n,manifest:a,loaderTimeout:s}){t.get("*",async r=>{try{let{html:e,statusCode:i,headers:l}=await n.render(r.req.url,r.req.raw,{manifest:a,loaderTimeout:s}),o=r.html(`<!DOCTYPE html>${e}`,i);for(let[u,c]of Object.entries(l))o.headers.set(u,c);return o}catch(e){return console.error(e),r.text("Internal Server Error",500)}})}export{d as registerApiRoutes,h as registerSsrRoute};
|
|
42
2
|
//# sourceMappingURL=routes.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/server/routes.ts"],
|
|
4
4
|
"sourcesContent": ["import type {Hono} from 'hono'\nimport type {Manifest} from 'vite'\n\ninterface ServerOptions {\n renderModule: any\n apiModule: any\n manifest?: Manifest\n loaderTimeout?: number\n}\n\nexport function registerApiRoutes(app: Hono, {apiModule, renderModule, loaderTimeout}: ServerOptions) {\n app.all('/api/*', async (c) => {\n try {\n return await apiModule.handleApiRequest(c.req.url, c.req.raw)\n } catch (e) {\n console.error(e)\n return c.json({error: 'internal error'}, 500)\n }\n })\n\n app.get('/_data/*', async (c) => {\n try {\n const {pathname, search} = new URL(c.req.url, 'http://localhost')\n const url = pathname.replace(/^\\/_data/, '') + search\n\n const data = await renderModule.runLoader(url, c.req.raw, {loaderTimeout})\n return c.json(data)\n } catch (e) {\n console.error(e)\n return c.json({error: 'internal error'}, 500)\n }\n })\n}\n\nexport function registerSsrRoute(app: Hono, {renderModule, manifest, loaderTimeout}: ServerOptions) {\n app.get('*', async (c) => {\n try {\n const {html, statusCode, headers} = await renderModule.render(c.req.url, c.req.raw, {manifest, loaderTimeout})\n const res = c.html(`<!DOCTYPE html>${html}`, statusCode)\n for (const [key, value] of Object.entries(headers as Record<string, string>)) {\n res.headers.set(key, value)\n }\n return res\n } catch (e) {\n console.error(e)\n return c.text('Internal Server Error', 500)\n }\n })\n}"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "AAUO,SAASA,EAAkBC,EAAW,CAAC,UAAAC,EAAW,aAAAC,EAAc,cAAAC,CAAa,EAAkB,CAClGH,EAAI,IAAI,SAAU,MAAOI,GAAM,CAC3B,GAAI,CACA,OAAO,MAAMH,EAAU,iBAAiBG,EAAE,IAAI,IAAKA,EAAE,IAAI,GAAG,CAChE,OAAS,EAAG,CACR,eAAQ,MAAM,CAAC,EACRA,EAAE,KAAK,CAAC,MAAO,gBAAgB,EAAG,GAAG,CAChD,CACJ,CAAC,EAEDJ,EAAI,IAAI,WAAY,MAAOI,GAAM,CAC7B,GAAI,CACA,GAAM,CAAC,SAAAC,EAAU,OAAAC,CAAM,EAAI,IAAI,IAAIF,EAAE,IAAI,IAAK,kBAAkB,EAC1DG,EAAMF,EAAS,QAAQ,WAAY,EAAE,EAAIC,EAEzCE,EAAO,MAAMN,EAAa,UAAUK,EAAKH,EAAE,IAAI,IAAK,CAAC,cAAAD,CAAa,CAAC,EACzE,OAAOC,EAAE,KAAKI,CAAI,CACtB,OAAS,EAAG,CACR,eAAQ,MAAM,CAAC,EACRJ,EAAE,KAAK,CAAC,MAAO,gBAAgB,EAAG,GAAG,CAChD,CACJ,CAAC,CACL,CAEO,SAASK,EAAiBT,EAAW,CAAC,aAAAE,EAAc,SAAAQ,EAAU,cAAAP,CAAa,EAAkB,CAChGH,EAAI,IAAI,IAAK,MAAOI,GAAM,CACtB,GAAI,CACA,GAAM,CAAC,KAAAO,EAAM,WAAAC,EAAY,QAAAC,CAAO,EAAI,MAAMX,EAAa,OAAOE,EAAE,IAAI,IAAKA,EAAE,IAAI,IAAK,CAAC,SAAAM,EAAU,cAAAP,CAAa,CAAC,EACvGW,EAAMV,EAAE,KAAK,kBAAkBO,CAAI,GAAIC,CAAU,EACvD,OAAW,CAACG,EAAKC,CAAK,IAAK,OAAO,QAAQH,CAAiC,EACvEC,EAAI,QAAQ,IAAIC,EAAKC,CAAK,EAE9B,OAAOF,CACX,OAAS,EAAG,CACR,eAAQ,MAAM,CAAC,EACRV,EAAE,KAAK,wBAAyB,GAAG,CAC9C,CACJ,CAAC,CACL",
|
|
6
|
+
"names": ["registerApiRoutes", "app", "apiModule", "renderModule", "loaderTimeout", "c", "pathname", "search", "url", "data", "registerSsrRoute", "manifest", "html", "statusCode", "headers", "res", "key", "value"]
|
|
7
7
|
}
|
package/dist/utils/async.js
CHANGED
|
@@ -1,14 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
function withTimeout(promise, ms) {
|
|
3
|
-
let timer;
|
|
4
|
-
return Promise.race([
|
|
5
|
-
promise.finally(() => clearTimeout(timer)),
|
|
6
|
-
new Promise((_, reject) => {
|
|
7
|
-
timer = setTimeout(() => reject(new Error(`timed out after ${ms}ms`)), ms);
|
|
8
|
-
})
|
|
9
|
-
]);
|
|
10
|
-
}
|
|
11
|
-
export {
|
|
12
|
-
withTimeout
|
|
13
|
-
};
|
|
1
|
+
function m(t,e){let r;return Promise.race([t.finally(()=>clearTimeout(r)),new Promise((o,i)=>{r=setTimeout(()=>i(new Error(`timed out after ${e}ms`)),e)})])}export{m as withTimeout};
|
|
14
2
|
//# sourceMappingURL=async.js.map
|
package/dist/utils/async.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/async.ts"],
|
|
4
4
|
"sourcesContent": ["export function withTimeout<T>(promise: Promise<T>, ms: number): Promise<T> {\n let timer: ReturnType<typeof setTimeout>\n return Promise.race([\n promise.finally(() => clearTimeout(timer)),\n new Promise<never>((_, reject) => {\n timer = setTimeout(() => reject(new Error(`timed out after ${ms}ms`)), ms)\n })\n ])\n}"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "AAAO,SAASA,EAAeC,EAAqBC,EAAwB,CACxE,IAAIC,EACJ,OAAO,QAAQ,KAAK,CAChBF,EAAQ,QAAQ,IAAM,aAAaE,CAAK,CAAC,EACzC,IAAI,QAAe,CAACC,EAAGC,IAAW,CAC9BF,EAAQ,WAAW,IAAME,EAAO,IAAI,MAAM,mBAAmBH,CAAE,IAAI,CAAC,EAAGA,CAAE,CAC7E,CAAC,CACL,CAAC,CACL",
|
|
6
|
+
"names": ["withTimeout", "promise", "ms", "timer", "_", "reject"]
|
|
7
7
|
}
|
package/dist/utils/banner.js
CHANGED
|
@@ -1,34 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import pc from "picocolors";
|
|
3
|
-
import { networkInterfaces } from "node:os";
|
|
4
|
-
import { createRequire } from "node:module";
|
|
5
|
-
function getNetworkUrl(port) {
|
|
6
|
-
const nets = networkInterfaces();
|
|
7
|
-
for (const interfaces of Object.values(nets)) {
|
|
8
|
-
for (const net of interfaces ?? []) {
|
|
9
|
-
if (net.family === "IPv4" && !net.internal) {
|
|
10
|
-
return `http://${net.address}:${port}/`;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
function printDevBanner(port) {
|
|
17
|
-
const req = createRequire(import.meta.url);
|
|
18
|
-
const version = req("../../package.json").version;
|
|
19
|
-
const networkUrl = getNetworkUrl(port);
|
|
20
|
-
console.log();
|
|
21
|
-
console.log(` ${pc.bold(pc.yellow("devix"))} ${pc.dim(`v${version}`)}`);
|
|
22
|
-
console.log();
|
|
23
|
-
console.log(` ${pc.green("\u279C")} ${pc.bold("Local:")} ${pc.cyan(`http://localhost:${port}/`)}`);
|
|
24
|
-
if (networkUrl) {
|
|
25
|
-
console.log(` ${pc.green("\u279C")} ${pc.bold("Network:")} ${pc.cyan(networkUrl)}`);
|
|
26
|
-
} else {
|
|
27
|
-
console.log(` ${pc.green("\u279C")} ${pc.bold("Network:")} ${pc.dim("use --host to expose")}`);
|
|
28
|
-
}
|
|
29
|
-
console.log();
|
|
30
|
-
}
|
|
31
|
-
export {
|
|
32
|
-
printDevBanner
|
|
33
|
-
};
|
|
1
|
+
import o from"picocolors";import{networkInterfaces as l}from"node:os";import{createRequire as s}from"node:module";function c(n){let t=l();for(let r of Object.values(t))for(let e of r??[])if(e.family==="IPv4"&&!e.internal)return`http://${e.address}:${n}/`;return null}function f(n){let r=s(import.meta.url)("../../package.json").version,e=c(n);console.log(),console.log(` ${o.bold(o.yellow("devix"))} ${o.dim(`v${r}`)}`),console.log(),console.log(` ${o.green("\u279C")} ${o.bold("Local:")} ${o.cyan(`http://localhost:${n}/`)}`),console.log(e?` ${o.green("\u279C")} ${o.bold("Network:")} ${o.cyan(e)}`:` ${o.green("\u279C")} ${o.bold("Network:")} ${o.dim("use --host to expose")}`),console.log()}export{f as printDevBanner};
|
|
34
2
|
//# sourceMappingURL=banner.js.map
|
package/dist/utils/banner.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/banner.ts"],
|
|
4
4
|
"sourcesContent": ["import pc from 'picocolors'\nimport {networkInterfaces} from 'node:os'\nimport {createRequire} from 'node:module'\n\nfunction getNetworkUrl(port: number): string | null {\n const nets = networkInterfaces()\n for (const interfaces of Object.values(nets)) {\n for (const net of interfaces ?? []) {\n if (net.family === 'IPv4' && !net.internal) {\n return `http://${net.address}:${port}/`\n }\n }\n }\n return null\n}\n\nexport function printDevBanner(port: number) {\n const req = createRequire(import.meta.url)\n const version = req('../../package.json').version\n const networkUrl = getNetworkUrl(port)\n\n console.log()\n console.log(` ${pc.bold(pc.yellow('devix'))} ${pc.dim(`v${version}`)}`)\n console.log()\n console.log(` ${pc.green('\u279C')} ${pc.bold('Local:')} ${pc.cyan(`http://localhost:${port}/`)}`)\n if (networkUrl) {\n console.log(` ${pc.green('\u279C')} ${pc.bold('Network:')} ${pc.cyan(networkUrl)}`)\n } else {\n console.log(` ${pc.green('\u279C')} ${pc.bold('Network:')} ${pc.dim('use --host to expose')}`)\n }\n console.log()\n}"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "AAAA,OAAOA,MAAQ,aACf,OAAQ,qBAAAC,MAAwB,UAChC,OAAQ,iBAAAC,MAAoB,cAE5B,SAASC,EAAcC,EAA6B,CAChD,IAAMC,EAAOJ,EAAkB,EAC/B,QAAWK,KAAc,OAAO,OAAOD,CAAI,EACvC,QAAWE,KAAOD,GAAc,CAAC,EAC7B,GAAIC,EAAI,SAAW,QAAU,CAACA,EAAI,SAC9B,MAAO,UAAUA,EAAI,OAAO,IAAIH,CAAI,IAIhD,OAAO,IACX,CAEO,SAASI,EAAeJ,EAAc,CAEzC,IAAMK,EADMP,EAAc,YAAY,GAAG,EACrB,oBAAoB,EAAE,QACpCQ,EAAaP,EAAcC,CAAI,EAErC,QAAQ,IAAI,EACZ,QAAQ,IAAI,KAAKJ,EAAG,KAAKA,EAAG,OAAO,OAAO,CAAC,CAAC,IAAIA,EAAG,IAAI,IAAIS,CAAO,EAAE,CAAC,EAAE,EACvE,QAAQ,IAAI,EACZ,QAAQ,IAAI,KAAKT,EAAG,MAAM,QAAG,CAAC,KAAKA,EAAG,KAAK,QAAQ,CAAC,MAAMA,EAAG,KAAK,oBAAoBI,CAAI,GAAG,CAAC,EAAE,EAE5F,QAAQ,IADRM,EACY,KAAKV,EAAG,MAAM,QAAG,CAAC,KAAKA,EAAG,KAAK,UAAU,CAAC,IAAIA,EAAG,KAAKU,CAAU,CAAC,GAEjE,KAAKV,EAAG,MAAM,QAAG,CAAC,KAAKA,EAAG,KAAK,UAAU,CAAC,IAAIA,EAAG,IAAI,sBAAsB,CAAC,EAFT,EAInF,QAAQ,IAAI,CAChB",
|
|
6
|
+
"names": ["pc", "networkInterfaces", "createRequire", "getNetworkUrl", "port", "nets", "interfaces", "net", "printDevBanner", "version", "networkUrl"]
|
|
7
7
|
}
|
package/dist/utils/cookies.js
CHANGED
|
@@ -1,29 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
function getCookie(req, name) {
|
|
3
|
-
const header = req.headers.get("cookie");
|
|
4
|
-
if (!header) return void 0;
|
|
5
|
-
for (const part of header.split(";")) {
|
|
6
|
-
const [key, ...rest] = part.trim().split("=");
|
|
7
|
-
if (key.trim() === name) return decodeURIComponent(rest.join("="));
|
|
8
|
-
}
|
|
9
|
-
return void 0;
|
|
10
|
-
}
|
|
11
|
-
function setCookie(headers, name, value, options = {}) {
|
|
12
|
-
let cookie = `${name}=${encodeURIComponent(value)}; Path=${options.path ?? "/"}`;
|
|
13
|
-
if (options.domain) cookie += `; Domain=${options.domain}`;
|
|
14
|
-
if (options.maxAge !== void 0) cookie += `; Max-Age=${options.maxAge}`;
|
|
15
|
-
if (options.expires) cookie += `; Expires=${options.expires.toUTCString()}`;
|
|
16
|
-
if (options.httpOnly) cookie += `; HttpOnly`;
|
|
17
|
-
if (options.secure) cookie += `; Secure`;
|
|
18
|
-
if (options.sameSite) cookie += `; SameSite=${options.sameSite}`;
|
|
19
|
-
headers.append("Set-Cookie", cookie);
|
|
20
|
-
}
|
|
21
|
-
function deleteCookie(headers, name, options = {}) {
|
|
22
|
-
setCookie(headers, name, "", { ...options, maxAge: 0, expires: /* @__PURE__ */ new Date(0) });
|
|
23
|
-
}
|
|
24
|
-
export {
|
|
25
|
-
deleteCookie,
|
|
26
|
-
getCookie,
|
|
27
|
-
setCookie
|
|
28
|
-
};
|
|
1
|
+
function d(n,r){let t=n.headers.get("cookie");if(t)for(let e of t.split(";")){let[i,...o]=e.trim().split("=");if(i.trim()===r)return decodeURIComponent(o.join("="))}}function a(n,r,t,e={}){let i=`${r}=${encodeURIComponent(t)}; Path=${e.path??"/"}`;e.domain&&(i+=`; Domain=${e.domain}`),e.maxAge!==void 0&&(i+=`; Max-Age=${e.maxAge}`),e.expires&&(i+=`; Expires=${e.expires.toUTCString()}`),e.httpOnly&&(i+="; HttpOnly"),e.secure&&(i+="; Secure"),e.sameSite&&(i+=`; SameSite=${e.sameSite}`),n.append("Set-Cookie",i)}function s(n,r,t={}){a(n,r,"",{...t,maxAge:0,expires:new Date(0)})}export{s as deleteCookie,d as getCookie,a as setCookie};
|
|
29
2
|
//# sourceMappingURL=cookies.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/cookies.ts"],
|
|
4
4
|
"sourcesContent": ["export interface CookieOptions {\n httpOnly?: boolean\n secure?: boolean\n sameSite?: 'Strict' | 'Lax' | 'None'\n maxAge?: number\n expires?: Date\n path?: string\n domain?: string\n}\n\nexport function getCookie(req: Request, name: string): string | undefined {\n const header = req.headers.get('cookie')\n if (!header) return undefined\n for (const part of header.split(';')) {\n const [key, ...rest] = part.trim().split('=')\n if (key.trim() === name) return decodeURIComponent(rest.join('='))\n }\n return undefined\n}\n\nexport function setCookie(headers: Headers, name: string, value: string, options: CookieOptions = {}): void {\n let cookie = `${name}=${encodeURIComponent(value)}; Path=${options.path ?? '/'}`\n if (options.domain) cookie += `; Domain=${options.domain}`\n if (options.maxAge !== undefined) cookie += `; Max-Age=${options.maxAge}`\n if (options.expires) cookie += `; Expires=${options.expires.toUTCString()}`\n if (options.httpOnly) cookie += `; HttpOnly`\n if (options.secure) cookie += `; Secure`\n if (options.sameSite) cookie += `; SameSite=${options.sameSite}`\n headers.append('Set-Cookie', cookie)\n}\n\nexport function deleteCookie(headers: Headers, name: string, options: Pick<CookieOptions, 'path' | 'domain'> = {}): void {\n setCookie(headers, name, '', {...options, maxAge: 0, expires: new Date(0)})\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "AAUO,SAASA,EAAUC,EAAcC,EAAkC,CACtE,IAAMC,EAASF,EAAI,QAAQ,IAAI,QAAQ,EACvC,GAAKE,EACL,QAAWC,KAAQD,EAAO,MAAM,GAAG,EAAG,CAClC,GAAM,CAACE,EAAK,GAAGC,CAAI,EAAIF,EAAK,KAAK,EAAE,MAAM,GAAG,EAC5C,GAAIC,EAAI,KAAK,IAAMH,EAAM,OAAO,mBAAmBI,EAAK,KAAK,GAAG,CAAC,CACrE,CAEJ,CAEO,SAASC,EAAUC,EAAkBN,EAAcO,EAAeC,EAAyB,CAAC,EAAS,CACxG,IAAIC,EAAS,GAAGT,CAAI,IAAI,mBAAmBO,CAAK,CAAC,UAAUC,EAAQ,MAAQ,GAAG,GAC1EA,EAAQ,SAAoBC,GAAU,YAAYD,EAAQ,MAAM,IAChEA,EAAQ,SAAW,SAAWC,GAAU,aAAaD,EAAQ,MAAM,IACnEA,EAAQ,UAAoBC,GAAU,aAAaD,EAAQ,QAAQ,YAAY,CAAC,IAChFA,EAAQ,WAAoBC,GAAU,cACtCD,EAAQ,SAAoBC,GAAU,YACtCD,EAAQ,WAAoBC,GAAU,cAAcD,EAAQ,QAAQ,IACxEF,EAAQ,OAAO,aAAcG,CAAM,CACvC,CAEO,SAASC,EAAaJ,EAAkBN,EAAcQ,EAAkD,CAAC,EAAS,CACrHH,EAAUC,EAASN,EAAM,GAAI,CAAC,GAAGQ,EAAS,OAAQ,EAAG,QAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAC9E",
|
|
6
|
+
"names": ["getCookie", "req", "name", "header", "part", "key", "rest", "setCookie", "headers", "value", "options", "cookie", "deleteCookie"]
|
|
7
7
|
}
|
package/dist/utils/duration.js
CHANGED
|
@@ -1,22 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
function parseDuration(value) {
|
|
3
|
-
if (typeof value === "number") return value;
|
|
4
|
-
const match = value.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h)?$/);
|
|
5
|
-
if (!match) throw new Error(`[devix] Invalid duration: "${value}". Use a number (ms) or a string like "5s", "2m", "500ms".`);
|
|
6
|
-
const n = parseFloat(match[1]);
|
|
7
|
-
switch (match[2]) {
|
|
8
|
-
case "h":
|
|
9
|
-
return n * 36e5;
|
|
10
|
-
case "m":
|
|
11
|
-
return n * 6e4;
|
|
12
|
-
case "s":
|
|
13
|
-
return n * 1e3;
|
|
14
|
-
case "ms":
|
|
15
|
-
default:
|
|
16
|
-
return n;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
export {
|
|
20
|
-
parseDuration
|
|
21
|
-
};
|
|
1
|
+
function s(r){if(typeof r=="number")return r;let n=r.trim().match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h)?$/);if(!n)throw new Error(`[devix] Invalid duration: "${r}". Use a number (ms) or a string like "5s", "2m", "500ms".`);let t=parseFloat(n[1]);switch(n[2]){case"h":return t*36e5;case"m":return t*6e4;case"s":return t*1e3;default:return t}}export{s as parseDuration};
|
|
22
2
|
//# sourceMappingURL=duration.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/duration.ts"],
|
|
4
4
|
"sourcesContent": ["export function parseDuration(value: number | string): number {\n if (typeof value === 'number') return value\n const match = value.trim().match(/^(\\d+(?:\\.\\d+)?)\\s*(ms|s|m|h)?$/)\n if (!match) throw new Error(`[devix] Invalid duration: \"${value}\". Use a number (ms) or a string like \"5s\", \"2m\", \"500ms\".`)\n const n = parseFloat(match[1])\n switch (match[2]) {\n case 'h': return n * 3_600_000\n case 'm': return n * 60_000\n case 's': return n * 1_000\n case 'ms':\n default: return n\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "AAAO,SAASA,EAAcC,EAAgC,CAC1D,GAAI,OAAOA,GAAU,SAAU,OAAOA,EACtC,IAAMC,EAAQD,EAAM,KAAK,EAAE,MAAM,iCAAiC,EAClE,GAAI,CAACC,EAAO,MAAM,IAAI,MAAM,8BAA8BD,CAAK,4DAA4D,EAC3H,IAAME,EAAI,WAAWD,EAAM,CAAC,CAAC,EAC7B,OAAQA,EAAM,CAAC,EAAG,CACd,IAAK,IAAM,OAAOC,EAAI,KACtB,IAAK,IAAM,OAAOA,EAAI,IACtB,IAAK,IAAM,OAAOA,EAAI,IAEtB,QAAW,OAAOA,CACtB,CACJ",
|
|
6
|
+
"names": ["parseDuration", "value", "match", "n"]
|
|
7
7
|
}
|
package/dist/utils/env.js
CHANGED
|
@@ -1,14 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { loadEnv } from "vite";
|
|
3
|
-
function loadDotenv(mode) {
|
|
4
|
-
const env = loadEnv(mode, process.cwd(), "");
|
|
5
|
-
for (const [key, value] of Object.entries(env)) {
|
|
6
|
-
if (process.env[key] === void 0) {
|
|
7
|
-
process.env[key] = value;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
export {
|
|
12
|
-
loadDotenv
|
|
13
|
-
};
|
|
1
|
+
import{loadEnv as r}from"vite";function c(o){let n=r(o,process.cwd(),"");for(let[e,s]of Object.entries(n))process.env[e]===void 0&&(process.env[e]=s)}export{c as loadDotenv};
|
|
14
2
|
//# sourceMappingURL=env.js.map
|
package/dist/utils/env.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/env.ts"],
|
|
4
4
|
"sourcesContent": ["import {loadEnv} from 'vite'\n\nexport function loadDotenv(mode: string) {\n const env = loadEnv(mode, process.cwd(), '')\n for (const [key, value] of Object.entries(env)) {\n if (process.env[key] === undefined) {\n process.env[key] = value\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "AAAA,OAAQ,WAAAA,MAAc,OAEf,SAASC,EAAWC,EAAc,CACrC,IAAMC,EAAMH,EAAQE,EAAM,QAAQ,IAAI,EAAG,EAAE,EAC3C,OAAW,CAACE,EAAKC,CAAK,IAAK,OAAO,QAAQF,CAAG,EACrC,QAAQ,IAAIC,CAAG,IAAM,SACrB,QAAQ,IAAIA,CAAG,EAAIC,EAG/B",
|
|
6
|
+
"names": ["loadEnv", "loadDotenv", "mode", "env", "key", "value"]
|
|
7
7
|
}
|
package/dist/utils/html.js
CHANGED
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
function safeJsonStringify(value) {
|
|
3
|
-
return JSON.stringify(value).replace(/<\/script>/gi, "<\\/script>");
|
|
4
|
-
}
|
|
5
|
-
function escapeAttr(value) {
|
|
6
|
-
return value.replace(/"/g, """);
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
escapeAttr,
|
|
10
|
-
safeJsonStringify
|
|
11
|
-
};
|
|
1
|
+
function t(r){return JSON.stringify(r).replace(/<\/script>/gi,"<\\/script>")}function n(r){return r.replace(/"/g,""")}export{n as escapeAttr,t as safeJsonStringify};
|
|
12
2
|
//# sourceMappingURL=html.js.map
|
package/dist/utils/html.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/html.ts"],
|
|
4
4
|
"sourcesContent": ["export function safeJsonStringify(value: unknown): string {\n return JSON.stringify(value).replace(/<\\/script>/gi, '<\\\\/script>')\n}\n\nexport function escapeAttr(value: string): string {\n return value.replace(/\"/g, '"')\n}"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "AAAO,SAASA,EAAkBC,EAAwB,CACtD,OAAO,KAAK,UAAUA,CAAK,EAAE,QAAQ,eAAgB,aAAa,CACtE,CAEO,SAASC,EAAWD,EAAuB,CAC9C,OAAOA,EAAM,QAAQ,KAAM,QAAQ,CACvC",
|
|
6
|
+
"names": ["safeJsonStringify", "value", "escapeAttr"]
|
|
7
7
|
}
|
package/dist/utils/patterns.js
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
function routePattern(rel) {
|
|
3
|
-
return rel.replace(/\.(tsx|ts|jsx|js)$/, "").replace(/\(.*?\)\//g, "").replace(/^index$|\/index$/, "").replace(/\[([^\]]+)]/g, ":$1") || "/";
|
|
4
|
-
}
|
|
5
|
-
export {
|
|
6
|
-
routePattern
|
|
7
|
-
};
|
|
1
|
+
function r(e){return e.replace(/\.(tsx|ts|jsx|js)$/,"").replace(/\(.*?\)\//g,"").replace(/^index$|\/index$/,"").replace(/\[([^\]]+)]/g,":$1")||"/"}export{r as routePattern};
|
|
8
2
|
//# sourceMappingURL=patterns.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/patterns.ts"],
|
|
4
4
|
"sourcesContent": ["export function routePattern(rel: string): string {\n return rel\n .replace(/\\.(tsx|ts|jsx|js)$/, '')\n .replace(/\\(.*?\\)\\//g, '')\n .replace(/^index$|\\/index$/, '')\n .replace(/\\[([^\\]]+)]/g, ':$1')\n || '/'\n}"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "AAAO,SAASA,EAAaC,EAAqB,CAC9C,OAAOA,EACE,QAAQ,qBAAsB,EAAE,EAChC,QAAQ,aAAc,EAAE,EACxB,QAAQ,mBAAoB,EAAE,EAC9B,QAAQ,eAAgB,KAAK,GAC/B,GACX",
|
|
6
|
+
"names": ["routePattern", "rel"]
|
|
7
7
|
}
|
package/dist/utils/response.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type JsonResponse<T = unknown> = Response & {
|
|
2
|
+
readonly __body: T;
|
|
3
|
+
};
|
|
4
|
+
export declare const json: <T>(data: T, status?: number) => JsonResponse<T>;
|
|
2
5
|
export declare const text: (body: string, status?: number) => Response;
|
|
3
6
|
export declare const redirect: (url: string, status?: number) => Response;
|
package/dist/utils/response.js
CHANGED
|
@@ -1,10 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
var json = (data, status = 200) => Response.json(data, { status });
|
|
3
|
-
var text = (body, status = 200) => new Response(body, { status, headers: { "Content-Type": "text/plain; charset=utf-8" } });
|
|
4
|
-
var redirect = (url, status = 302) => new Response(null, { status, headers: { Location: url } });
|
|
5
|
-
export {
|
|
6
|
-
json,
|
|
7
|
-
redirect,
|
|
8
|
-
text
|
|
9
|
-
};
|
|
1
|
+
var n=(e,s=200)=>Response.json(e,{status:s}),o=(e,s=200)=>new Response(e,{status:s,headers:{"Content-Type":"text/plain; charset=utf-8"}}),t=(e,s=302)=>new Response(null,{status:s,headers:{Location:e}});export{n as json,t as redirect,o as text};
|
|
10
2
|
//# sourceMappingURL=response.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/response.ts"],
|
|
4
|
-
"sourcesContent": ["export const json = (data:
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
4
|
+
"sourcesContent": ["export type JsonResponse<T = unknown> = Response & { readonly __body: T }\n\nexport const json = <T>(data: T, status = 200): JsonResponse<T> =>\n Response.json(data, {status}) as JsonResponse<T>\n\nexport const text = (body: string, status = 200): Response =>\n new Response(body, {status, headers: {'Content-Type': 'text/plain; charset=utf-8'}})\n\nexport const redirect = (url: string, status = 302): Response =>\n new Response(null, {status, headers: {Location: url}})\n"],
|
|
5
|
+
"mappings": "AAEO,IAAMA,EAAO,CAAIC,EAASC,EAAS,MACtC,SAAS,KAAKD,EAAM,CAAC,OAAAC,CAAM,CAAC,EAEnBC,EAAO,CAACC,EAAcF,EAAS,MACxC,IAAI,SAASE,EAAM,CAAC,OAAAF,EAAQ,QAAS,CAAC,eAAgB,2BAA2B,CAAC,CAAC,EAE1EG,EAAW,CAACC,EAAaJ,EAAS,MAC3C,IAAI,SAAS,KAAM,CAAC,OAAAA,EAAQ,QAAS,CAAC,SAAUI,CAAG,CAAC,CAAC",
|
|
6
|
+
"names": ["json", "data", "status", "text", "body", "redirect", "url"]
|
|
7
7
|
}
|
package/dist/vite/codegen/api.js
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
return `
|
|
4
|
-
import { handleApiRequest as _handleApiRequest } from '${apiPath}'
|
|
1
|
+
function i({apiPath:t,appDir:e}){return`
|
|
2
|
+
import { handleApiRequest as _handleApiRequest } from '${t}'
|
|
5
3
|
|
|
6
|
-
const _routes = import.meta.glob(['/${
|
|
7
|
-
const _middlewares = import.meta.glob('/${
|
|
4
|
+
const _routes = import.meta.glob(['/${e}/api/**/*.ts', '!**/middleware.ts'])
|
|
5
|
+
const _middlewares = import.meta.glob('/${e}/api/**/middleware.ts')
|
|
8
6
|
|
|
9
7
|
const _glob = {
|
|
10
8
|
routes: _routes,
|
|
11
9
|
middlewares: _middlewares,
|
|
12
|
-
apiDir: '/${
|
|
10
|
+
apiDir: '/${e}/api',
|
|
13
11
|
}
|
|
14
12
|
|
|
15
13
|
export function handleApiRequest(url, request) {
|
|
16
14
|
return _handleApiRequest(url, request, _glob)
|
|
17
15
|
}
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
export {
|
|
21
|
-
generateApi
|
|
22
|
-
};
|
|
16
|
+
`}export{i as generateApi};
|
|
23
17
|
//# sourceMappingURL=api.js.map
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/vite/codegen/api.ts"],
|
|
4
4
|
"sourcesContent": ["interface ApiOptions {\n apiPath: string\n appDir: string\n}\n\nexport function generateApi({apiPath, appDir}: ApiOptions): string {\n return `\nimport { handleApiRequest as _handleApiRequest } from '${apiPath}'\n\nconst _routes = import.meta.glob(['/${appDir}/api/**/*.ts', '!**/middleware.ts'])\nconst _middlewares = import.meta.glob('/${appDir}/api/**/middleware.ts')\n\nconst _glob = {\n routes: _routes,\n middlewares: _middlewares,\n apiDir: '/${appDir}/api',\n}\n\nexport function handleApiRequest(url, request) {\n return _handleApiRequest(url, request, _glob)\n}\n`\n}\n"],
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
5
|
+
"mappings": "AAKO,SAASA,EAAY,CAAC,QAAAC,EAAS,OAAAC,CAAM,EAAuB,CAC/D,MAAO;AAAA,yDAC8CD,CAAO;AAAA;AAAA,sCAE1BC,CAAM;AAAA,0CACFA,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA,gBAKhCA,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAOtB",
|
|
6
|
+
"names": ["generateApi", "apiPath", "appDir"]
|
|
7
7
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
function generateClientRoutes({ pagesDir, matcherPath }) {
|
|
3
|
-
return `
|
|
1
|
+
function r({pagesDir:e,matcherPath:t}){return`
|
|
4
2
|
import React from 'react'
|
|
5
|
-
import { createMatcher } from '${
|
|
6
|
-
const pageFiles = import.meta.glob(['/${
|
|
7
|
-
const layoutFiles = import.meta.glob('/${
|
|
8
|
-
const errorFiles = import.meta.glob('/${
|
|
3
|
+
import { createMatcher } from '${t}'
|
|
4
|
+
const pageFiles = import.meta.glob(['/${e}/**/*.tsx', '!**/error.tsx', '!**/layout.tsx'])
|
|
5
|
+
const layoutFiles = import.meta.glob('/${e}/**/layout.tsx')
|
|
6
|
+
const errorFiles = import.meta.glob('/${e}/**/error.tsx')
|
|
9
7
|
|
|
10
8
|
export const matchClientRoute = createMatcher(pageFiles, layoutFiles)
|
|
11
9
|
|
|
@@ -28,9 +26,5 @@ export function getDefaultErrorPage() {
|
|
|
28
26
|
)
|
|
29
27
|
}
|
|
30
28
|
}
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
export {
|
|
34
|
-
generateClientRoutes
|
|
35
|
-
};
|
|
29
|
+
`}export{r as generateClientRoutes};
|
|
36
30
|
//# sourceMappingURL=client-routes.js.map
|