@withl5e/l5e 0.2.7 → 0.3.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/defineMiddleware-VdHQuiUc.js +7 -0
- package/dist/defineMiddleware-VdHQuiUc.js.map +1 -0
- package/dist/entry-server.js +1 -1
- package/dist/{generateMetadata-CIFVlViV.js → generateMetadata-Cn2uJjg_.js} +6 -6
- package/dist/generateMetadata-Cn2uJjg_.js.map +1 -0
- package/dist/i18n.js +12 -0
- package/dist/i18n.js.map +1 -0
- package/dist/{index-BlfNBupp.js → index-CybB8Tdk.js} +30 -33
- package/dist/index-CybB8Tdk.js.map +1 -0
- package/dist/index.js +24 -23
- package/dist/index.js.map +1 -1
- package/dist/middleware.js +5 -4
- package/dist/middleware.js.map +1 -1
- package/dist/seo.js +1 -1
- package/dist/server.js +374 -380
- package/dist/server.js.map +1 -1
- package/dist/tooltip.js +92 -74
- package/dist/tooltip.js.map +1 -1
- package/package.json +5 -1
- package/src/core/bundler.ts +201 -205
- package/src/core/jsx-types.d.ts +1 -0
- package/src/core/server.ts +52 -29
- package/src/i18n/index.ts +2 -0
- package/src/i18n/middleware.ts +50 -0
- package/src/i18n/types.ts +13 -0
- package/src/seo/generateMetadata.tsx +7 -2
- package/src/seo/types.ts +16 -0
- package/src/tooltip/index.ts +2 -1
- package/src/tooltip/tooltip-runtime.ts +71 -4
- package/dist/generateMetadata-CIFVlViV.js.map +0 -1
- package/dist/index-BlfNBupp.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineMiddleware-VdHQuiUc.js","sources":["../src/middleware/defineMiddleware.ts"],"sourcesContent":["import type { MiddlewareHandler } from './types';\n\nexport function defineMiddleware(fn: MiddlewareHandler): MiddlewareHandler {\n return fn;\n}\n"],"names":["defineMiddleware","fn"],"mappings":"AAEO,SAASA,EAAiBC,GAA0C;AACzE,SAAOA;AACT;"}
|
package/dist/entry-server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as g, s as _ } from "./render-DTXfJu0d.js";
|
|
2
|
-
import { M as z } from "./generateMetadata-
|
|
2
|
+
import { M as z } from "./generateMetadata-Cn2uJjg_.js";
|
|
3
3
|
import { N as G, I as b, R as U, H as Y, S as H } from "./exceptions-CHPz01DJ.js";
|
|
4
4
|
import { s as K, t as V, b as P, p as T, n as N, l as w, i as Q, a as W, H as X, d as D, e as j, h as Z, g as B, f as A, j as q } from "./jsx-runtime-Bokflh8Q.js";
|
|
5
5
|
import { viewLoaders as k, viewComponents as f } from "virtual:l5e-views";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxFactory as t, Fragment as T } from "@withl5e/l5e/jsx-runtime";
|
|
2
2
|
import { w as j, q as M, m as C, a as s, H as l, F as o } from "./jsx-runtime-Bokflh8Q.js";
|
|
3
|
-
function
|
|
3
|
+
function q({ metadata: h }) {
|
|
4
4
|
const { request: w } = j(), u = M(), e = h ? C(u, h) : u;
|
|
5
5
|
if (!e) return null;
|
|
6
6
|
const g = () => e.title ? typeof e.title == "string" ? e.title : e.title.default : null, G = () => {
|
|
@@ -18,7 +18,7 @@ function O({ metadata: h }) {
|
|
|
18
18
|
if (!e.formatDetection) return null;
|
|
19
19
|
const r = [];
|
|
20
20
|
return e.formatDetection.telephone === !1 && r.push("telephone=no"), e.formatDetection.date === !1 && r.push("date=no"), e.formatDetection.address === !1 && r.push("address=no"), e.formatDetection.email === !1 && r.push("email=no"), r.length > 0 ? r.join(", ") : null;
|
|
21
|
-
}, A = () => e.openGraph?.images ? (Array.isArray(e.openGraph.images) ? e.openGraph.images : [e.openGraph.images]).map((n) => typeof n == "string" ? { url: n } : n) : [],
|
|
21
|
+
}, A = () => e.openGraph?.images ? (Array.isArray(e.openGraph.images) ? e.openGraph.images : [e.openGraph.images]).map((n) => typeof n == "string" ? { url: n } : n) : [], L = () => e.twitter?.images ? (Array.isArray(e.twitter.images) ? e.twitter.images : [e.twitter.images]).map((n) => typeof n == "string" ? { url: n } : n) : [], _ = () => {
|
|
22
22
|
if (!e.icons) return { icon: [], apple: [], shortcut: null, other: [] };
|
|
23
23
|
const r = e.icons.icon ? Array.isArray(e.icons.icon) ? e.icons.icon : [e.icons.icon] : [], n = e.icons.apple ? Array.isArray(e.icons.apple) ? e.icons.apple : [e.icons.apple] : [];
|
|
24
24
|
return {
|
|
@@ -27,8 +27,8 @@ function O({ metadata: h }) {
|
|
|
27
27
|
shortcut: e.icons.shortcut || null,
|
|
28
28
|
other: e.icons.other || []
|
|
29
29
|
};
|
|
30
|
-
}, c = g(), d = G(), m = b(), f = k(), S = x(), y = v(), I = A(), D =
|
|
31
|
-
return /* @__PURE__ */ t(T, null, (e.charset || m) && /* @__PURE__ */ t(s, { priority: l.CRITICAL }, e.charset && /* @__PURE__ */ t("meta", { charset: e.charset }), m && /* @__PURE__ */ t("meta", { name: "viewport", content: m })), (c || e.description || e.canonical || e.prev || e.next) && /* @__PURE__ */ t(s, { priority: l.HIGH }, c && /* @__PURE__ */ t("title", null, c), e.description && /* @__PURE__ */ t("meta", { name: "description", content: e.description }), e.canonical && /* @__PURE__ */ t("link", { rel: "canonical", href: e.canonical }), e.prev && /* @__PURE__ */ t("link", { rel: "prev", href: e.prev }), e.next && /* @__PURE__ */ t("link", { rel: "next", href: e.next })), /* @__PURE__ */ t(s, { priority: l.MEDIUM }, f && /* @__PURE__ */ t("meta", { name: "keywords", content: f }), d && /* @__PURE__ */ t("meta", { name: "robots", content: d }), e.colorScheme && /* @__PURE__ */ t("meta", { name: "color-scheme", content: e.colorScheme }), N.map((r, n) => /* @__PURE__ */ t("meta", { name: "theme-color", content: r })), e.generator && /* @__PURE__ */ t("meta", { name: "generator", content: e.generator }), e.creator && /* @__PURE__ */ t("meta", { name: "creator", content: e.creator }), e.publisher && /* @__PURE__ */ t("meta", { name: "publisher", content: e.publisher }), e.referrer && /* @__PURE__ */ t("meta", { name: "referrer", content: e.referrer }), e.category && /* @__PURE__ */ t("meta", { name: "category", content: e.category }), e.classification && /* @__PURE__ */ t("meta", { name: "classification", content: e.classification }), y && /* @__PURE__ */ t("meta", { name: "format-detection", content: y }), S.map((r, n) => /* @__PURE__ */ t(o, null, /* @__PURE__ */ t("meta", { name: "author", content: r.name }), r.url && /* @__PURE__ */ t("link", { rel: "author", href: r.url }))), i.icon.map((r, n) => /* @__PURE__ */ t("link", { rel: "icon", href: r })), i.shortcut && /* @__PURE__ */ t("link", { rel: "shortcut icon", href: i.shortcut }), i.apple.map((r, n) => /* @__PURE__ */ t("link", { rel: "apple-touch-icon", href: r })), i.other.map((r, n) => /* @__PURE__ */ t(
|
|
30
|
+
}, c = g(), d = G(), m = b(), f = k(), S = x(), y = v(), I = A(), D = L(), i = _(), N = Array.isArray(e.themeColor) ? e.themeColor : e.themeColor ? [e.themeColor] : [];
|
|
31
|
+
return /* @__PURE__ */ t(T, null, (e.charset || m) && /* @__PURE__ */ t(s, { priority: l.CRITICAL }, e.charset && /* @__PURE__ */ t("meta", { charset: e.charset }), m && /* @__PURE__ */ t("meta", { name: "viewport", content: m })), (c || e.description || e.canonical || e.prev || e.next || e.alternateLocales) && /* @__PURE__ */ t(s, { priority: l.HIGH }, c && /* @__PURE__ */ t("title", null, c), e.description && /* @__PURE__ */ t("meta", { name: "description", content: e.description }), e.canonical && /* @__PURE__ */ t("link", { rel: "canonical", href: e.canonical }), e.prev && /* @__PURE__ */ t("link", { rel: "prev", href: e.prev }), e.next && /* @__PURE__ */ t("link", { rel: "next", href: e.next }), e.alternateLocales && Object.entries(e.alternateLocales).map(([r, n]) => /* @__PURE__ */ t("link", { rel: "alternate", hreflang: r, href: n }))), /* @__PURE__ */ t(s, { priority: l.MEDIUM }, f && /* @__PURE__ */ t("meta", { name: "keywords", content: f }), d && /* @__PURE__ */ t("meta", { name: "robots", content: d }), e.colorScheme && /* @__PURE__ */ t("meta", { name: "color-scheme", content: e.colorScheme }), N.map((r, n) => /* @__PURE__ */ t("meta", { name: "theme-color", content: r })), e.generator && /* @__PURE__ */ t("meta", { name: "generator", content: e.generator }), e.creator && /* @__PURE__ */ t("meta", { name: "creator", content: e.creator }), e.publisher && /* @__PURE__ */ t("meta", { name: "publisher", content: e.publisher }), e.referrer && /* @__PURE__ */ t("meta", { name: "referrer", content: e.referrer }), e.category && /* @__PURE__ */ t("meta", { name: "category", content: e.category }), e.classification && /* @__PURE__ */ t("meta", { name: "classification", content: e.classification }), y && /* @__PURE__ */ t("meta", { name: "format-detection", content: y }), S.map((r, n) => /* @__PURE__ */ t(o, null, /* @__PURE__ */ t("meta", { name: "author", content: r.name }), r.url && /* @__PURE__ */ t("link", { rel: "author", href: r.url }))), i.icon.map((r, n) => /* @__PURE__ */ t("link", { rel: "icon", href: r })), i.shortcut && /* @__PURE__ */ t("link", { rel: "shortcut icon", href: i.shortcut }), i.apple.map((r, n) => /* @__PURE__ */ t("link", { rel: "apple-touch-icon", href: r })), i.other.map((r, n) => /* @__PURE__ */ t(
|
|
32
32
|
"link",
|
|
33
33
|
{
|
|
34
34
|
rel: r.rel || "icon",
|
|
@@ -139,6 +139,6 @@ function O({ metadata: h }) {
|
|
|
139
139
|
)))));
|
|
140
140
|
}
|
|
141
141
|
export {
|
|
142
|
-
|
|
142
|
+
q as M
|
|
143
143
|
};
|
|
144
|
-
//# sourceMappingURL=generateMetadata-
|
|
144
|
+
//# sourceMappingURL=generateMetadata-Cn2uJjg_.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateMetadata-Cn2uJjg_.js","sources":["../src/seo/generateMetadata.tsx"],"sourcesContent":["/// <reference types=\"../core/jsx-types\" />\nimport { HEAD_PRIORITY } from '../core/head-priority';\nimport { Fragment, Head, resolveMetadata, useRequest } from '../core/jsx-runtime';\n\nimport { mergeMetadata } from './mergeMetadata';\nimport type { Metadata } from './types';\n\n/**\n * Converts Metadata object to SEO meta tags\n * This is the core function that transforms the metadata object into actual HTML tags\n *\n * If metadata is provided, it will be merged with metadata from the stack (from global/page loaders)\n * If no metadata is provided, it will use resolved metadata from the stack\n */\nexport function MetadataRenderer({ metadata }: { metadata?: Metadata }) {\n const { request } = useRequest();\n\n // Resolve metadata from stack (hierarchical metadata from loaders)\n const stackMetadata = resolveMetadata();\n\n // Merge: stack metadata (parent) + provided metadata (child)\n // If metadata is provided, it overrides stack metadata\n // If not provided, use stack metadata only\n const resolvedMetadata = metadata ? mergeMetadata(stackMetadata, metadata) : stackMetadata;\n\n if (!resolvedMetadata) return null;\n\n // Helper to normalize title\n const getTitle = () => {\n if (!resolvedMetadata.title) return null;\n if (typeof resolvedMetadata.title === 'string') return resolvedMetadata.title;\n // Handle TemplateString\n return resolvedMetadata.title.default;\n };\n\n // Helper to normalize robots\n const getRobots = () => {\n // tránh tiêm query\n const queryNames = Object.keys(request.query || {});\n // mặc định nếu có query sẽ ép robots về noindex\n // tuy nhiên 1 số trường hợp đặc biệt ví dụ như page=1 có chủ đích `allowQueryNames` sẽ bỏ qua nguyên tắc này\n\n const noindex =\n queryNames.filter((name) => {\n if (typeof resolvedMetadata.robots === 'string') return false;\n if (Array.isArray(resolvedMetadata.robots?.allowQueryNames))\n return !resolvedMetadata.robots.allowQueryNames.includes(name);\n return name !== resolvedMetadata.robots?.allowQueryNames;\n }).length > 0;\n\n if (noindex) return 'noindex, follow';\n\n if (!resolvedMetadata.robots) return null;\n if (typeof resolvedMetadata.robots === 'string') return resolvedMetadata.robots;\n\n const parts: string[] = [];\n if (resolvedMetadata.robots.index === false) parts.push('noindex');\n else if (resolvedMetadata.robots.index === true) parts.push('index');\n\n if (resolvedMetadata.robots.follow === false) parts.push('nofollow');\n else if (resolvedMetadata.robots.follow === true) parts.push('follow');\n\n if (resolvedMetadata.robots.noarchive) parts.push('noarchive');\n if (resolvedMetadata.robots.nosnippet) parts.push('nosnippet');\n if (resolvedMetadata.robots.noimageindex) parts.push('noimageindex');\n if (resolvedMetadata.robots.nocache) parts.push('nocache');\n\n return parts.length > 0 ? parts.join(', ') : null;\n };\n\n // Helper to normalize viewport\n const getViewport = () => {\n if (!resolvedMetadata.viewport) return null;\n if (typeof resolvedMetadata.viewport === 'string') return resolvedMetadata.viewport;\n\n const parts: string[] = [];\n if (resolvedMetadata.viewport.width) parts.push(`width=${resolvedMetadata.viewport.width}`);\n if (resolvedMetadata.viewport.height) parts.push(`height=${resolvedMetadata.viewport.height}`);\n if (resolvedMetadata.viewport.initialScale)\n parts.push(`initial-scale=${resolvedMetadata.viewport.initialScale}`);\n if (resolvedMetadata.viewport.maximumScale)\n parts.push(`maximum-scale=${resolvedMetadata.viewport.maximumScale}`);\n if (resolvedMetadata.viewport.minimumScale)\n parts.push(`minimum-scale=${resolvedMetadata.viewport.minimumScale}`);\n if (resolvedMetadata.viewport.userScalable !== undefined) {\n parts.push(`user-scalable=${resolvedMetadata.viewport.userScalable ? 'yes' : 'no'}`);\n }\n\n return parts.length > 0 ? parts.join(', ') : null;\n };\n\n // Helper to normalize keywords\n const getKeywords = () => {\n if (!resolvedMetadata.keywords) return null;\n if (Array.isArray(resolvedMetadata.keywords)) return resolvedMetadata.keywords.join(', ');\n return resolvedMetadata.keywords;\n };\n\n // Helper to normalize authors\n const getAuthors = () => {\n if (!resolvedMetadata.author) return [];\n if (typeof resolvedMetadata.author === 'string') return [{ name: resolvedMetadata.author }];\n if (Array.isArray(resolvedMetadata.author)) return resolvedMetadata.author;\n return [resolvedMetadata.author];\n };\n\n // Helper to normalize format detection\n const getFormatDetection = () => {\n if (!resolvedMetadata.formatDetection) return null;\n\n const parts: string[] = [];\n if (resolvedMetadata.formatDetection.telephone === false) parts.push('telephone=no');\n if (resolvedMetadata.formatDetection.date === false) parts.push('date=no');\n if (resolvedMetadata.formatDetection.address === false) parts.push('address=no');\n if (resolvedMetadata.formatDetection.email === false) parts.push('email=no');\n\n return parts.length > 0 ? parts.join(', ') : null;\n };\n\n // Helper to normalize Open Graph images\n const getOgImages = () => {\n if (!resolvedMetadata.openGraph?.images) return [];\n\n const images = Array.isArray(resolvedMetadata.openGraph.images)\n ? resolvedMetadata.openGraph.images\n : [resolvedMetadata.openGraph.images];\n\n return images.map((img) => {\n if (typeof img === 'string') return { url: img };\n return img;\n });\n };\n\n // Helper to normalize Twitter images\n const getTwitterImages = () => {\n if (!resolvedMetadata.twitter?.images) return [];\n\n const images = Array.isArray(resolvedMetadata.twitter.images)\n ? resolvedMetadata.twitter.images\n : [resolvedMetadata.twitter.images];\n\n return images.map((img) => {\n if (typeof img === 'string') return { url: img };\n return img;\n });\n };\n\n // Helper to get icon URLs\n const getIcons = () => {\n if (!resolvedMetadata.icons) return { icon: [], apple: [], shortcut: null, other: [] };\n\n const iconUrls = resolvedMetadata.icons.icon\n ? Array.isArray(resolvedMetadata.icons.icon)\n ? resolvedMetadata.icons.icon\n : [resolvedMetadata.icons.icon]\n : [];\n\n const appleUrls = resolvedMetadata.icons.apple\n ? Array.isArray(resolvedMetadata.icons.apple)\n ? resolvedMetadata.icons.apple\n : [resolvedMetadata.icons.apple]\n : [];\n\n return {\n icon: iconUrls,\n apple: appleUrls,\n shortcut: resolvedMetadata.icons.shortcut || null,\n other: resolvedMetadata.icons.other || [],\n };\n };\n\n const title = getTitle();\n const robots = getRobots();\n const viewport = getViewport();\n const keywords = getKeywords();\n const authors = getAuthors();\n const formatDetection = getFormatDetection();\n const ogImages = getOgImages();\n const twitterImages = getTwitterImages();\n const icons = getIcons();\n const themeColors = Array.isArray(resolvedMetadata.themeColor)\n ? resolvedMetadata.themeColor\n : resolvedMetadata.themeColor\n ? [resolvedMetadata.themeColor]\n : [];\n\n return (\n <>\n {/* Critical: charset, viewport - must be first */}\n {(resolvedMetadata.charset || viewport) && (\n <Head priority={HEAD_PRIORITY.CRITICAL}>\n {resolvedMetadata.charset && <meta charset={resolvedMetadata.charset} />}\n {viewport && <meta name=\"viewport\" content={viewport} />}\n </Head>\n )}\n\n {/* High priority: title, description, canonical, prev/next, hreflang alternates */}\n {(title ||\n resolvedMetadata.description ||\n resolvedMetadata.canonical ||\n resolvedMetadata.prev ||\n resolvedMetadata.next ||\n resolvedMetadata.alternateLocales) && (\n <Head priority={HEAD_PRIORITY.HIGH}>\n {title && <title>{title}</title>}\n {resolvedMetadata.description && (\n <meta name=\"description\" content={resolvedMetadata.description} />\n )}\n {resolvedMetadata.canonical && <link rel=\"canonical\" href={resolvedMetadata.canonical} />}\n {resolvedMetadata.prev && <link rel=\"prev\" href={resolvedMetadata.prev} />}\n {resolvedMetadata.next && <link rel=\"next\" href={resolvedMetadata.next} />}\n {resolvedMetadata.alternateLocales &&\n Object.entries(resolvedMetadata.alternateLocales).map(([hreflang, href]) => (\n <link rel=\"alternate\" hreflang={hreflang} href={href} />\n ))}\n </Head>\n )}\n\n {/* Medium priority: meta tags, robots */}\n <Head priority={HEAD_PRIORITY.MEDIUM}>\n {keywords && <meta name=\"keywords\" content={keywords} />}\n {robots && <meta name=\"robots\" content={robots} />}\n {resolvedMetadata.colorScheme && (\n <meta name=\"color-scheme\" content={resolvedMetadata.colorScheme} />\n )}\n\n {/* Theme colors */}\n {themeColors.map((color, index) => (\n <meta name=\"theme-color\" content={color} />\n ))}\n\n {resolvedMetadata.generator && (\n <meta name=\"generator\" content={resolvedMetadata.generator} />\n )}\n {resolvedMetadata.creator && <meta name=\"creator\" content={resolvedMetadata.creator} />}\n {resolvedMetadata.publisher && (\n <meta name=\"publisher\" content={resolvedMetadata.publisher} />\n )}\n {resolvedMetadata.referrer && <meta name=\"referrer\" content={resolvedMetadata.referrer} />}\n {resolvedMetadata.category && <meta name=\"category\" content={resolvedMetadata.category} />}\n {resolvedMetadata.classification && (\n <meta name=\"classification\" content={resolvedMetadata.classification} />\n )}\n {formatDetection && <meta name=\"format-detection\" content={formatDetection} />}\n\n {/* Authors */}\n {authors.map((author, index) => (\n <Fragment>\n <meta name=\"author\" content={author.name} />\n {author.url && <link rel=\"author\" href={author.url} />}\n </Fragment>\n ))}\n\n {/* Icons */}\n {icons.icon.map((url, index) => (\n <link rel=\"icon\" href={url} />\n ))}\n {icons.shortcut && <link rel=\"shortcut icon\" href={icons.shortcut} />}\n {icons.apple.map((url, index) => (\n <link rel=\"apple-touch-icon\" href={url} />\n ))}\n {icons.other.map((icon, index) => (\n <link\n rel={icon.rel || 'icon'}\n href={icon.url}\n {...(icon.sizes && { sizes: icon.sizes })}\n {...(icon.type && { type: icon.type })}\n />\n ))}\n\n {/* Manifest */}\n {resolvedMetadata.manifest && <link rel=\"manifest\" href={resolvedMetadata.manifest} />}\n\n {/* Feeds */}\n {resolvedMetadata.feed && (\n <link rel=\"alternate\" type=\"application/rss+xml\" href={resolvedMetadata.feed} />\n )}\n\n {/* Verification */}\n {resolvedMetadata.verification?.google && (\n <meta name=\"google-site-verification\" content={resolvedMetadata.verification.google} />\n )}\n {resolvedMetadata.verification?.yahoo && (\n <meta name=\"y_key\" content={resolvedMetadata.verification.yahoo} />\n )}\n {resolvedMetadata.verification?.yandex && (\n <meta name=\"yandex-verification\" content={resolvedMetadata.verification.yandex} />\n )}\n {resolvedMetadata.verification?.me &&\n (Array.isArray(resolvedMetadata.verification.me) ? (\n resolvedMetadata.verification.me.map((url, index) => <link rel=\"me\" href={url} />)\n ) : (\n <link rel=\"me\" href={resolvedMetadata.verification.me} />\n ))}\n {resolvedMetadata.verification?.other &&\n Object.entries(resolvedMetadata.verification.other).map(([key, value]) =>\n Array.isArray(value) ? (\n value.map((v, index) => <meta name={key} content={v} />)\n ) : (\n <meta name={key} content={value} />\n ),\n )}\n\n {/* App Links */}\n {resolvedMetadata.appLinks && (\n <Fragment>\n {resolvedMetadata.appLinks.ios?.url && (\n <meta property=\"al:ios:url\" content={resolvedMetadata.appLinks.ios.url} />\n )}\n {resolvedMetadata.appLinks.ios?.app_store_id && (\n <meta\n property=\"al:ios:app_store_id\"\n content={resolvedMetadata.appLinks.ios.app_store_id}\n />\n )}\n {resolvedMetadata.appLinks.ios?.app_name && (\n <meta property=\"al:ios:app_name\" content={resolvedMetadata.appLinks.ios.app_name} />\n )}\n {resolvedMetadata.appLinks.android?.package && (\n <meta\n property=\"al:android:package\"\n content={resolvedMetadata.appLinks.android.package}\n />\n )}\n {resolvedMetadata.appLinks.android?.app_name && (\n <meta\n property=\"al:android:app_name\"\n content={resolvedMetadata.appLinks.android.app_name}\n />\n )}\n {resolvedMetadata.appLinks.android?.url && (\n <meta property=\"al:android:url\" content={resolvedMetadata.appLinks.android.url} />\n )}\n {resolvedMetadata.appLinks.web?.url && (\n <meta property=\"al:web:url\" content={resolvedMetadata.appLinks.web.url} />\n )}\n {resolvedMetadata.appLinks.web?.should_fallback !== undefined && (\n <meta\n property=\"al:web:should_fallback\"\n content={String(resolvedMetadata.appLinks.web.should_fallback)}\n />\n )}\n </Fragment>\n )}\n\n {/* Additional meta tags */}\n {resolvedMetadata.other &&\n Object.entries(resolvedMetadata.other).map(([key, value]) =>\n Array.isArray(value) ? (\n value.map((v, index) => <meta name={key} content={String(v)} />)\n ) : (\n <meta name={key} content={String(value)} />\n ),\n )}\n </Head>\n\n {/* SEO: OpenGraph, Twitter - lower priority */}\n {(resolvedMetadata.openGraph || resolvedMetadata.twitter) && (\n <Head priority={HEAD_PRIORITY.SEO}>\n {/* Open Graph */}\n {resolvedMetadata.openGraph && (\n <Fragment>\n {resolvedMetadata.openGraph.title && (\n <meta property=\"og:title\" content={resolvedMetadata.openGraph.title} />\n )}\n {resolvedMetadata.openGraph.description && (\n <meta property=\"og:description\" content={resolvedMetadata.openGraph.description} />\n )}\n {resolvedMetadata.openGraph.type && (\n <meta property=\"og:type\" content={resolvedMetadata.openGraph.type} />\n )}\n {resolvedMetadata.openGraph.url && (\n <meta property=\"og:url\" content={resolvedMetadata.openGraph.url} />\n )}\n {resolvedMetadata.openGraph.siteName && (\n <meta property=\"og:site_name\" content={resolvedMetadata.openGraph.siteName} />\n )}\n {resolvedMetadata.openGraph.locale && (\n <meta property=\"og:locale\" content={resolvedMetadata.openGraph.locale} />\n )}\n {resolvedMetadata.openGraph.alternateLocale &&\n (Array.isArray(resolvedMetadata.openGraph.alternateLocale) ? (\n resolvedMetadata.openGraph.alternateLocale.map((locale, index) => (\n <meta property=\"og:locale:alternate\" content={locale} />\n ))\n ) : (\n <meta\n property=\"og:locale:alternate\"\n content={resolvedMetadata.openGraph.alternateLocale}\n />\n ))}\n {resolvedMetadata.openGraph.determiner && (\n <meta property=\"og:determiner\" content={resolvedMetadata.openGraph.determiner} />\n )}\n\n {/* OG Images */}\n {ogImages.map((image, index) => (\n <Fragment>\n <meta property=\"og:image\" content={image.url} />\n {image.secureUrl && (\n <meta property=\"og:image:secure_url\" content={image.secureUrl} />\n )}\n {image.alt && <meta property=\"og:image:alt\" content={image.alt} />}\n {image.type && <meta property=\"og:image:type\" content={image.type} />}\n {image.width && <meta property=\"og:image:width\" content={String(image.width)} />}\n {image.height && (\n <meta property=\"og:image:height\" content={String(image.height)} />\n )}\n </Fragment>\n ))}\n\n {/* Article specific */}\n {resolvedMetadata.openGraph.publishedTime && (\n <meta\n property=\"article:published_time\"\n content={resolvedMetadata.openGraph.publishedTime}\n />\n )}\n {resolvedMetadata.openGraph.modifiedTime && (\n <meta\n property=\"article:modified_time\"\n content={resolvedMetadata.openGraph.modifiedTime}\n />\n )}\n {resolvedMetadata.openGraph.expirationTime && (\n <meta\n property=\"article:expiration_time\"\n content={resolvedMetadata.openGraph.expirationTime}\n />\n )}\n {resolvedMetadata.openGraph.authors &&\n (Array.isArray(resolvedMetadata.openGraph.authors) ? (\n resolvedMetadata.openGraph.authors.map((author, index) => (\n <meta property=\"article:author\" content={author} />\n ))\n ) : (\n <meta property=\"article:author\" content={resolvedMetadata.openGraph.authors} />\n ))}\n {resolvedMetadata.openGraph.section && (\n <meta property=\"article:section\" content={resolvedMetadata.openGraph.section} />\n )}\n {resolvedMetadata.openGraph.tags &&\n (Array.isArray(resolvedMetadata.openGraph.tags) ? (\n resolvedMetadata.openGraph.tags.map((tag, index) => (\n <meta property=\"article:tag\" content={tag} />\n ))\n ) : (\n <meta property=\"article:tag\" content={resolvedMetadata.openGraph.tags} />\n ))}\n\n {/* Book specific */}\n {resolvedMetadata.openGraph.isbn && (\n <meta property=\"book:isbn\" content={resolvedMetadata.openGraph.isbn} />\n )}\n {resolvedMetadata.openGraph.releaseDate && (\n <meta\n property=\"book:release_date\"\n content={resolvedMetadata.openGraph.releaseDate}\n />\n )}\n\n {/* Profile specific */}\n {resolvedMetadata.openGraph.firstName && (\n <meta\n property=\"profile:first_name\"\n content={resolvedMetadata.openGraph.firstName}\n />\n )}\n {resolvedMetadata.openGraph.lastName && (\n <meta property=\"profile:last_name\" content={resolvedMetadata.openGraph.lastName} />\n )}\n {resolvedMetadata.openGraph.username && (\n <meta property=\"profile:username\" content={resolvedMetadata.openGraph.username} />\n )}\n {resolvedMetadata.openGraph.gender && (\n <meta property=\"profile:gender\" content={resolvedMetadata.openGraph.gender} />\n )}\n </Fragment>\n )}\n\n {/* Twitter Card */}\n {resolvedMetadata.twitter && (\n <Fragment>\n {resolvedMetadata.twitter.card && (\n <meta name=\"twitter:card\" content={resolvedMetadata.twitter.card} />\n )}\n {resolvedMetadata.twitter.site && (\n <meta name=\"twitter:site\" content={resolvedMetadata.twitter.site} />\n )}\n {resolvedMetadata.twitter.siteId && (\n <meta name=\"twitter:site:id\" content={resolvedMetadata.twitter.siteId} />\n )}\n {resolvedMetadata.twitter.creator && (\n <meta name=\"twitter:creator\" content={resolvedMetadata.twitter.creator} />\n )}\n {resolvedMetadata.twitter.creatorId && (\n <meta name=\"twitter:creator:id\" content={resolvedMetadata.twitter.creatorId} />\n )}\n {resolvedMetadata.twitter.title && (\n <meta name=\"twitter:title\" content={resolvedMetadata.twitter.title} />\n )}\n {resolvedMetadata.twitter.description && (\n <meta name=\"twitter:description\" content={resolvedMetadata.twitter.description} />\n )}\n\n {/* Twitter Images */}\n {twitterImages.map((image, index) => (\n <Fragment>\n <meta name=\"twitter:image\" content={image.url} />\n {image.alt && <meta name=\"twitter:image:alt\" content={image.alt} />}\n </Fragment>\n ))}\n\n {/* Twitter App */}\n {resolvedMetadata.twitter.app && (\n <Fragment>\n {resolvedMetadata.twitter.app.name && (\n <meta name=\"twitter:app:name\" content={resolvedMetadata.twitter.app.name} />\n )}\n {resolvedMetadata.twitter.app.id.iphone && (\n <meta\n name=\"twitter:app:id:iphone\"\n content={resolvedMetadata.twitter.app.id.iphone}\n />\n )}\n {resolvedMetadata.twitter.app.id.ipad && (\n <meta\n name=\"twitter:app:id:ipad\"\n content={resolvedMetadata.twitter.app.id.ipad}\n />\n )}\n {resolvedMetadata.twitter.app.id.googleplay && (\n <meta\n name=\"twitter:app:id:googleplay\"\n content={resolvedMetadata.twitter.app.id.googleplay}\n />\n )}\n {resolvedMetadata.twitter.app.url?.iphone && (\n <meta\n name=\"twitter:app:url:iphone\"\n content={resolvedMetadata.twitter.app.url.iphone}\n />\n )}\n {resolvedMetadata.twitter.app.url?.ipad && (\n <meta\n name=\"twitter:app:url:ipad\"\n content={resolvedMetadata.twitter.app.url.ipad}\n />\n )}\n {resolvedMetadata.twitter.app.url?.googleplay && (\n <meta\n name=\"twitter:app:url:googleplay\"\n content={resolvedMetadata.twitter.app.url.googleplay}\n />\n )}\n </Fragment>\n )}\n </Fragment>\n )}\n </Head>\n )}\n </>\n );\n}\n"],"names":["MetadataRenderer","metadata","request","useRequest","stackMetadata","resolveMetadata","resolvedMetadata","mergeMetadata","getTitle","getRobots","name","parts","getViewport","getKeywords","getAuthors","getFormatDetection","getOgImages","img","getTwitterImages","getIcons","iconUrls","appleUrls","title","robots","viewport","keywords","authors","formatDetection","ogImages","twitterImages","icons","themeColors","jsxFactory","__Fragment","Head","HEAD_PRIORITY","hreflang","href","color","index","author","Fragment","url","icon","key","value","v","locale","image","tag"],"mappings":";;AAcO,SAASA,EAAiB,EAAE,UAAAC,KAAqC;AACtE,QAAM,EAAE,SAAAC,EAAA,IAAYC,EAAA,GAGdC,IAAgBC,EAAA,GAKhBC,IAAmBL,IAAWM,EAAcH,GAAeH,CAAQ,IAAIG;AAE7E,MAAI,CAACE,EAAkB,QAAO;AAG9B,QAAME,IAAW,MACVF,EAAiB,QAClB,OAAOA,EAAiB,SAAU,WAAiBA,EAAiB,QAEjEA,EAAiB,MAAM,UAHM,MAOhCG,IAAY,MAAM;AActB,QAZmB,OAAO,KAAKP,EAAQ,SAAS,CAAA,CAAE,EAKrC,OAAO,CAACQ,MACb,OAAOJ,EAAiB,UAAW,WAAiB,KACpD,MAAM,QAAQA,EAAiB,QAAQ,eAAe,IACjD,CAACA,EAAiB,OAAO,gBAAgB,SAASI,CAAI,IACxDA,MAASJ,EAAiB,QAAQ,eAC1C,EAAE,SAAS,EAED,QAAO;AAEpB,QAAI,CAACA,EAAiB,OAAQ,QAAO;AACrC,QAAI,OAAOA,EAAiB,UAAW,iBAAiBA,EAAiB;AAEzE,UAAMK,IAAkB,CAAA;AACxB,WAAIL,EAAiB,OAAO,UAAU,KAAOK,EAAM,KAAK,SAAS,IACxDL,EAAiB,OAAO,UAAU,MAAMK,EAAM,KAAK,OAAO,GAE/DL,EAAiB,OAAO,WAAW,KAAOK,EAAM,KAAK,UAAU,IAC1DL,EAAiB,OAAO,WAAW,MAAMK,EAAM,KAAK,QAAQ,GAEjEL,EAAiB,OAAO,aAAWK,EAAM,KAAK,WAAW,GACzDL,EAAiB,OAAO,aAAWK,EAAM,KAAK,WAAW,GACzDL,EAAiB,OAAO,gBAAcK,EAAM,KAAK,cAAc,GAC/DL,EAAiB,OAAO,WAASK,EAAM,KAAK,SAAS,GAElDA,EAAM,SAAS,IAAIA,EAAM,KAAK,IAAI,IAAI;AAAA,EAC/C,GAGMC,IAAc,MAAM;AACxB,QAAI,CAACN,EAAiB,SAAU,QAAO;AACvC,QAAI,OAAOA,EAAiB,YAAa,iBAAiBA,EAAiB;AAE3E,UAAMK,IAAkB,CAAA;AACxB,WAAIL,EAAiB,SAAS,SAAOK,EAAM,KAAK,SAASL,EAAiB,SAAS,KAAK,EAAE,GACtFA,EAAiB,SAAS,UAAQK,EAAM,KAAK,UAAUL,EAAiB,SAAS,MAAM,EAAE,GACzFA,EAAiB,SAAS,gBAC5BK,EAAM,KAAK,iBAAiBL,EAAiB,SAAS,YAAY,EAAE,GAClEA,EAAiB,SAAS,gBAC5BK,EAAM,KAAK,iBAAiBL,EAAiB,SAAS,YAAY,EAAE,GAClEA,EAAiB,SAAS,gBAC5BK,EAAM,KAAK,iBAAiBL,EAAiB,SAAS,YAAY,EAAE,GAClEA,EAAiB,SAAS,iBAAiB,UAC7CK,EAAM,KAAK,iBAAiBL,EAAiB,SAAS,eAAe,QAAQ,IAAI,EAAE,GAG9EK,EAAM,SAAS,IAAIA,EAAM,KAAK,IAAI,IAAI;AAAA,EAC/C,GAGME,IAAc,MACbP,EAAiB,WAClB,MAAM,QAAQA,EAAiB,QAAQ,IAAUA,EAAiB,SAAS,KAAK,IAAI,IACjFA,EAAiB,WAFe,MAMnCQ,IAAa,MACZR,EAAiB,SAClB,OAAOA,EAAiB,UAAW,WAAiB,CAAC,EAAE,MAAMA,EAAiB,QAAQ,IACtF,MAAM,QAAQA,EAAiB,MAAM,IAAUA,EAAiB,SAC7D,CAACA,EAAiB,MAAM,IAHM,CAAA,GAOjCS,IAAqB,MAAM;AAC/B,QAAI,CAACT,EAAiB,gBAAiB,QAAO;AAE9C,UAAMK,IAAkB,CAAA;AACxB,WAAIL,EAAiB,gBAAgB,cAAc,MAAOK,EAAM,KAAK,cAAc,GAC/EL,EAAiB,gBAAgB,SAAS,MAAOK,EAAM,KAAK,SAAS,GACrEL,EAAiB,gBAAgB,YAAY,MAAOK,EAAM,KAAK,YAAY,GAC3EL,EAAiB,gBAAgB,UAAU,MAAOK,EAAM,KAAK,UAAU,GAEpEA,EAAM,SAAS,IAAIA,EAAM,KAAK,IAAI,IAAI;AAAA,EAC/C,GAGMK,IAAc,MACbV,EAAiB,WAAW,UAElB,MAAM,QAAQA,EAAiB,UAAU,MAAM,IAC1DA,EAAiB,UAAU,SAC3B,CAACA,EAAiB,UAAU,MAAM,GAExB,IAAI,CAACW,MACb,OAAOA,KAAQ,WAAiB,EAAE,KAAKA,EAAA,IACpCA,CACR,IAT+C,CAAA,GAa5CC,IAAmB,MAClBZ,EAAiB,SAAS,UAEhB,MAAM,QAAQA,EAAiB,QAAQ,MAAM,IACxDA,EAAiB,QAAQ,SACzB,CAACA,EAAiB,QAAQ,MAAM,GAEtB,IAAI,CAACW,MACb,OAAOA,KAAQ,WAAiB,EAAE,KAAKA,EAAA,IACpCA,CACR,IAT6C,CAAA,GAa1CE,IAAW,MAAM;AACrB,QAAI,CAACb,EAAiB,MAAO,QAAO,EAAE,MAAM,CAAA,GAAI,OAAO,CAAA,GAAI,UAAU,MAAM,OAAO,CAAA,EAAC;AAEnF,UAAMc,IAAWd,EAAiB,MAAM,OACpC,MAAM,QAAQA,EAAiB,MAAM,IAAI,IACvCA,EAAiB,MAAM,OACvB,CAACA,EAAiB,MAAM,IAAI,IAC9B,CAAA,GAEEe,IAAYf,EAAiB,MAAM,QACrC,MAAM,QAAQA,EAAiB,MAAM,KAAK,IACxCA,EAAiB,MAAM,QACvB,CAACA,EAAiB,MAAM,KAAK,IAC/B,CAAA;AAEJ,WAAO;AAAA,MACL,MAAMc;AAAA,MACN,OAAOC;AAAA,MACP,UAAUf,EAAiB,MAAM,YAAY;AAAA,MAC7C,OAAOA,EAAiB,MAAM,SAAS,CAAA;AAAA,IAAC;AAAA,EAE5C,GAEMgB,IAAQd,EAAA,GACRe,IAASd,EAAA,GACTe,IAAWZ,EAAA,GACXa,IAAWZ,EAAA,GACXa,IAAUZ,EAAA,GACVa,IAAkBZ,EAAA,GAClBa,IAAWZ,EAAA,GACXa,IAAgBX,EAAA,GAChBY,IAAQX,EAAA,GACRY,IAAc,MAAM,QAAQzB,EAAiB,UAAU,IACzDA,EAAiB,aACjBA,EAAiB,aACf,CAACA,EAAiB,UAAU,IAC5B,CAAA;AAEN,SACE,gBAAA0B,EAAAC,GAAA,OAEI3B,EAAiB,WAAWkB,wBAC3BU,GAAA,EAAK,UAAUC,EAAc,SAAA,GAC3B7B,EAAiB,WAAW,gBAAA0B,EAAC,QAAA,EAAK,SAAS1B,EAAiB,QAAA,CAAS,GACrEkB,KAAY,gBAAAQ,EAAC,QAAA,EAAK,MAAK,YAAW,SAASR,EAAA,CAAU,CACxD,IAIAF,KACAhB,EAAiB,eACjBA,EAAiB,aACjBA,EAAiB,QACjBA,EAAiB,QACjBA,EAAiB,qBACjB,gBAAA0B,EAACE,GAAA,EAAK,UAAUC,EAAc,KAAA,GAC3Bb,KAAS,gBAAAU,EAAC,SAAA,MAAOV,CAAM,GACvBhB,EAAiB,iCACf,QAAA,EAAK,MAAK,eAAc,SAASA,EAAiB,YAAA,CAAa,GAEjEA,EAAiB,aAAa,gBAAA0B,EAAC,QAAA,EAAK,KAAI,aAAY,MAAM1B,EAAiB,UAAA,CAAW,GACtFA,EAAiB,QAAQ,gBAAA0B,EAAC,QAAA,EAAK,KAAI,QAAO,MAAM1B,EAAiB,KAAA,CAAM,GACvEA,EAAiB,QAAQ,gBAAA0B,EAAC,QAAA,EAAK,KAAI,QAAO,MAAM1B,EAAiB,KAAA,CAAM,GACvEA,EAAiB,oBAChB,OAAO,QAAQA,EAAiB,gBAAgB,EAAE,IAAI,CAAC,CAAC8B,GAAUC,CAAI,wBACnE,QAAA,EAAK,KAAI,aAAY,UAAAD,GAAoB,MAAAC,GAAY,CACvD,CACL,GAIF,gBAAAL,EAACE,GAAA,EAAK,UAAUC,EAAc,OAAA,GAC3BV,KAAY,gBAAAO,EAAC,QAAA,EAAK,MAAK,YAAW,SAASP,GAAU,GACrDF,uBAAW,QAAA,EAAK,MAAK,UAAS,SAASA,EAAA,CAAQ,GAC/CjB,EAAiB,iCACf,QAAA,EAAK,MAAK,gBAAe,SAASA,EAAiB,YAAA,CAAa,GAIlEyB,EAAY,IAAI,CAACO,GAAOC,MACvB,gBAAAP,EAAC,QAAA,EAAK,MAAK,eAAc,SAASM,EAAA,CAAO,CAC1C,GAEAhC,EAAiB,aAChB,gBAAA0B,EAAC,QAAA,EAAK,MAAK,aAAY,SAAS1B,EAAiB,UAAA,CAAW,GAE7DA,EAAiB,WAAW,gBAAA0B,EAAC,QAAA,EAAK,MAAK,WAAU,SAAS1B,EAAiB,QAAA,CAAS,GACpFA,EAAiB,aAChB,gBAAA0B,EAAC,QAAA,EAAK,MAAK,aAAY,SAAS1B,EAAiB,UAAA,CAAW,GAE7DA,EAAiB,YAAY,gBAAA0B,EAAC,QAAA,EAAK,MAAK,YAAW,SAAS1B,EAAiB,SAAA,CAAU,GACvFA,EAAiB,YAAY,gBAAA0B,EAAC,QAAA,EAAK,MAAK,YAAW,SAAS1B,EAAiB,SAAA,CAAU,GACvFA,EAAiB,kBAChB,gBAAA0B,EAAC,UAAK,MAAK,kBAAiB,SAAS1B,EAAiB,gBAAgB,GAEvEqB,KAAmB,gBAAAK,EAAC,QAAA,EAAK,MAAK,oBAAmB,SAASL,EAAA,CAAiB,GAG3ED,EAAQ,IAAI,CAACc,GAAQD,MACpB,gBAAAP,EAACS,GAAA,MACC,gBAAAT,EAAC,QAAA,EAAK,MAAK,UAAS,SAASQ,EAAO,MAAM,GACzCA,EAAO,OAAO,gBAAAR,EAAC,QAAA,EAAK,KAAI,UAAS,MAAMQ,EAAO,IAAA,CAAK,CACtD,CACD,GAGAV,EAAM,KAAK,IAAI,CAACY,GAAKH,MACpB,gBAAAP,EAAC,QAAA,EAAK,KAAI,QAAO,MAAMU,EAAA,CAAK,CAC7B,GACAZ,EAAM,YAAY,gBAAAE,EAAC,QAAA,EAAK,KAAI,iBAAgB,MAAMF,EAAM,SAAA,CAAU,GAClEA,EAAM,MAAM,IAAI,CAACY,GAAKH,MACrB,gBAAAP,EAAC,QAAA,EAAK,KAAI,oBAAmB,MAAMU,EAAA,CAAK,CACzC,GACAZ,EAAM,MAAM,IAAI,CAACa,GAAMJ,MACtB,gBAAAP;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKW,EAAK,OAAO;AAAA,MACjB,MAAMA,EAAK;AAAA,MACV,GAAIA,EAAK,SAAS,EAAE,OAAOA,EAAK,MAAA;AAAA,MAChC,GAAIA,EAAK,QAAQ,EAAE,MAAMA,EAAK,KAAA;AAAA,IAAK;AAAA,EAAA,CAEvC,GAGArC,EAAiB,8BAAa,QAAA,EAAK,KAAI,YAAW,MAAMA,EAAiB,SAAA,CAAU,GAGnFA,EAAiB,0BACf,QAAA,EAAK,KAAI,aAAY,MAAK,uBAAsB,MAAMA,EAAiB,KAAA,CAAM,GAI/EA,EAAiB,cAAc,4BAC7B,QAAA,EAAK,MAAK,4BAA2B,SAASA,EAAiB,aAAa,OAAA,CAAQ,GAEtFA,EAAiB,cAAc,SAC9B,gBAAA0B,EAAC,UAAK,MAAK,SAAQ,SAAS1B,EAAiB,aAAa,MAAA,CAAO,GAElEA,EAAiB,cAAc,UAC9B,gBAAA0B,EAAC,QAAA,EAAK,MAAK,uBAAsB,SAAS1B,EAAiB,aAAa,OAAA,CAAQ,GAEjFA,EAAiB,cAAc,OAC7B,MAAM,QAAQA,EAAiB,aAAa,EAAE,IAC7CA,EAAiB,aAAa,GAAG,IAAI,CAACoC,GAAKH,wBAAW,QAAA,EAAK,KAAI,MAAK,MAAMG,EAAA,CAAK,CAAE,IAEjF,gBAAAV,EAAC,QAAA,EAAK,KAAI,MAAK,MAAM1B,EAAiB,aAAa,GAAA,CAAI,IAE1DA,EAAiB,cAAc,SAC9B,OAAO,QAAQA,EAAiB,aAAa,KAAK,EAAE;AAAA,IAAI,CAAC,CAACsC,GAAKC,CAAK,MAClE,MAAM,QAAQA,CAAK,IACjBA,EAAM,IAAI,CAACC,GAAGP,MAAU,gBAAAP,EAAC,QAAA,EAAK,MAAMY,GAAK,SAASE,EAAA,CAAG,CAAE,IAEvD,gBAAAd,EAAC,QAAA,EAAK,MAAMY,GAAK,SAASC,EAAA,CAAO;AAAA,EAAA,GAKtCvC,EAAiB,YAChB,gBAAA0B,EAACS,SACEnC,EAAiB,SAAS,KAAK,OAC9B,gBAAA0B,EAAC,QAAA,EAAK,UAAS,cAAa,SAAS1B,EAAiB,SAAS,IAAI,KAAK,GAEzEA,EAAiB,SAAS,KAAK,gBAC9B,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,SAAS1B,EAAiB,SAAS,IAAI;AAAA,IAAA;AAAA,EAAA,GAG1CA,EAAiB,SAAS,KAAK,YAC9B,gBAAA0B,EAAC,UAAK,UAAS,mBAAkB,SAAS1B,EAAiB,SAAS,IAAI,SAAA,CAAU,GAEnFA,EAAiB,SAAS,SAAS,WAClC,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,SAAS1B,EAAiB,SAAS,QAAQ;AAAA,IAAA;AAAA,EAAA,GAG9CA,EAAiB,SAAS,SAAS,YAClC,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,SAAS1B,EAAiB,SAAS,QAAQ;AAAA,IAAA;AAAA,EAAA,GAG9CA,EAAiB,SAAS,SAAS,OAClC,gBAAA0B,EAAC,QAAA,EAAK,UAAS,kBAAiB,SAAS1B,EAAiB,SAAS,QAAQ,KAAK,GAEjFA,EAAiB,SAAS,KAAK,OAC9B,gBAAA0B,EAAC,QAAA,EAAK,UAAS,cAAa,SAAS1B,EAAiB,SAAS,IAAI,KAAK,GAEzEA,EAAiB,SAAS,KAAK,oBAAoB,UAClD,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,SAAS,OAAO1B,EAAiB,SAAS,IAAI,eAAe;AAAA,IAAA;AAAA,EAAA,CAGnE,GAIDA,EAAiB,SAChB,OAAO,QAAQA,EAAiB,KAAK,EAAE;AAAA,IAAI,CAAC,CAACsC,GAAKC,CAAK,MACrD,MAAM,QAAQA,CAAK,IACjBA,EAAM,IAAI,CAACC,GAAGP,MAAU,gBAAAP,EAAC,QAAA,EAAK,MAAMY,GAAK,SAAS,OAAOE,CAAC,GAAG,CAAE,IAE/D,gBAAAd,EAAC,QAAA,EAAK,MAAMY,GAAK,SAAS,OAAOC,CAAK,EAAA,CAAG;AAAA,EAAA,CAGjD,IAGEvC,EAAiB,aAAaA,EAAiB,YAC/C,gBAAA0B,EAACE,GAAA,EAAK,UAAUC,EAAc,IAAA,GAE3B7B,EAAiB,aAChB,gBAAA0B,EAACS,GAAA,MACEnC,EAAiB,UAAU,SAC1B,gBAAA0B,EAAC,UAAK,UAAS,YAAW,SAAS1B,EAAiB,UAAU,MAAA,CAAO,GAEtEA,EAAiB,UAAU,eAC1B,gBAAA0B,EAAC,QAAA,EAAK,UAAS,kBAAiB,SAAS1B,EAAiB,UAAU,YAAA,CAAa,GAElFA,EAAiB,UAAU,QAC1B,gBAAA0B,EAAC,QAAA,EAAK,UAAS,WAAU,SAAS1B,EAAiB,UAAU,KAAA,CAAM,GAEpEA,EAAiB,UAAU,OAC1B,gBAAA0B,EAAC,UAAK,UAAS,UAAS,SAAS1B,EAAiB,UAAU,IAAA,CAAK,GAElEA,EAAiB,UAAU,YAC1B,gBAAA0B,EAAC,QAAA,EAAK,UAAS,gBAAe,SAAS1B,EAAiB,UAAU,SAAA,CAAU,GAE7EA,EAAiB,UAAU,UAC1B,gBAAA0B,EAAC,QAAA,EAAK,UAAS,aAAY,SAAS1B,EAAiB,UAAU,OAAA,CAAQ,GAExEA,EAAiB,UAAU,oBACzB,MAAM,QAAQA,EAAiB,UAAU,eAAe,IACvDA,EAAiB,UAAU,gBAAgB,IAAI,CAACyC,GAAQR,MACtD,gBAAAP,EAAC,QAAA,EAAK,UAAS,uBAAsB,SAASe,EAAA,CAAQ,CACvD,IAED,gBAAAf;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,SAAS1B,EAAiB,UAAU;AAAA,IAAA;AAAA,EAAA,IAGzCA,EAAiB,UAAU,cAC1B,gBAAA0B,EAAC,QAAA,EAAK,UAAS,iBAAgB,SAAS1B,EAAiB,UAAU,YAAY,GAIhFsB,EAAS,IAAI,CAACoB,GAAOT,MACpB,gBAAAP,EAACS,GAAA,MACC,gBAAAT,EAAC,QAAA,EAAK,UAAS,YAAW,SAASgB,EAAM,IAAA,CAAK,GAC7CA,EAAM,aACL,gBAAAhB,EAAC,UAAK,UAAS,uBAAsB,SAASgB,EAAM,WAAW,GAEhEA,EAAM,yBAAQ,QAAA,EAAK,UAAS,gBAAe,SAASA,EAAM,IAAA,CAAK,GAC/DA,EAAM,QAAQ,gBAAAhB,EAAC,UAAK,UAAS,iBAAgB,SAASgB,EAAM,MAAM,GAClEA,EAAM,SAAS,gBAAAhB,EAAC,QAAA,EAAK,UAAS,kBAAiB,SAAS,OAAOgB,EAAM,KAAK,EAAA,CAAG,GAC7EA,EAAM,UACL,gBAAAhB,EAAC,UAAK,UAAS,mBAAkB,SAAS,OAAOgB,EAAM,MAAM,EAAA,CAAG,CAEpE,CACD,GAGA1C,EAAiB,UAAU,iBAC1B,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,SAAS1B,EAAiB,UAAU;AAAA,IAAA;AAAA,EAAA,GAGvCA,EAAiB,UAAU,gBAC1B,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,SAAS1B,EAAiB,UAAU;AAAA,IAAA;AAAA,EAAA,GAGvCA,EAAiB,UAAU,kBAC1B,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,SAAS1B,EAAiB,UAAU;AAAA,IAAA;AAAA,EAAA,GAGvCA,EAAiB,UAAU,YACzB,MAAM,QAAQA,EAAiB,UAAU,OAAO,IAC/CA,EAAiB,UAAU,QAAQ,IAAI,CAACkC,GAAQD,MAC9C,gBAAAP,EAAC,QAAA,EAAK,UAAS,kBAAiB,SAASQ,GAAQ,CAClD,sBAEA,QAAA,EAAK,UAAS,kBAAiB,SAASlC,EAAiB,UAAU,QAAA,CAAS,IAEhFA,EAAiB,UAAU,6BACzB,QAAA,EAAK,UAAS,mBAAkB,SAASA,EAAiB,UAAU,QAAA,CAAS,GAE/EA,EAAiB,UAAU,SACzB,MAAM,QAAQA,EAAiB,UAAU,IAAI,IAC5CA,EAAiB,UAAU,KAAK,IAAI,CAAC2C,GAAKV,MACxC,gBAAAP,EAAC,QAAA,EAAK,UAAS,eAAc,SAASiB,GAAK,CAC5C,sBAEA,QAAA,EAAK,UAAS,eAAc,SAAS3C,EAAiB,UAAU,MAAM,IAI1EA,EAAiB,UAAU,0BACzB,QAAA,EAAK,UAAS,aAAY,SAASA,EAAiB,UAAU,KAAA,CAAM,GAEtEA,EAAiB,UAAU,eAC1B,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,SAAS1B,EAAiB,UAAU;AAAA,IAAA;AAAA,EAAA,GAKvCA,EAAiB,UAAU,aAC1B,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,UAAS;AAAA,MACT,SAAS1B,EAAiB,UAAU;AAAA,IAAA;AAAA,EAAA,GAGvCA,EAAiB,UAAU,YAC1B,gBAAA0B,EAAC,QAAA,EAAK,UAAS,qBAAoB,SAAS1B,EAAiB,UAAU,UAAU,GAElFA,EAAiB,UAAU,YAC1B,gBAAA0B,EAAC,UAAK,UAAS,oBAAmB,SAAS1B,EAAiB,UAAU,SAAA,CAAU,GAEjFA,EAAiB,UAAU,4BACzB,QAAA,EAAK,UAAS,kBAAiB,SAASA,EAAiB,UAAU,QAAQ,CAEhF,GAIDA,EAAiB,6BACfmC,GAAA,MACEnC,EAAiB,QAAQ,0BACvB,QAAA,EAAK,MAAK,gBAAe,SAASA,EAAiB,QAAQ,KAAA,CAAM,GAEnEA,EAAiB,QAAQ,QACxB,gBAAA0B,EAAC,QAAA,EAAK,MAAK,gBAAe,SAAS1B,EAAiB,QAAQ,MAAM,GAEnEA,EAAiB,QAAQ,UACxB,gBAAA0B,EAAC,UAAK,MAAK,mBAAkB,SAAS1B,EAAiB,QAAQ,QAAQ,GAExEA,EAAiB,QAAQ,WACxB,gBAAA0B,EAAC,UAAK,MAAK,mBAAkB,SAAS1B,EAAiB,QAAQ,QAAA,CAAS,GAEzEA,EAAiB,QAAQ,+BACvB,QAAA,EAAK,MAAK,sBAAqB,SAASA,EAAiB,QAAQ,WAAW,GAE9EA,EAAiB,QAAQ,SACxB,gBAAA0B,EAAC,QAAA,EAAK,MAAK,iBAAgB,SAAS1B,EAAiB,QAAQ,OAAO,GAErEA,EAAiB,QAAQ,eACxB,gBAAA0B,EAAC,UAAK,MAAK,uBAAsB,SAAS1B,EAAiB,QAAQ,aAAa,GAIjFuB,EAAc,IAAI,CAACmB,GAAOT,MACzB,gBAAAP,EAACS,GAAA,MACC,gBAAAT,EAAC,QAAA,EAAK,MAAK,iBAAgB,SAASgB,EAAM,KAAK,GAC9CA,EAAM,OAAO,gBAAAhB,EAAC,QAAA,EAAK,MAAK,qBAAoB,SAASgB,EAAM,KAAK,CACnE,CACD,GAGA1C,EAAiB,QAAQ,OACxB,gBAAA0B,EAACS,SACEnC,EAAiB,QAAQ,IAAI,QAC5B,gBAAA0B,EAAC,UAAK,MAAK,oBAAmB,SAAS1B,EAAiB,QAAQ,IAAI,MAAM,GAE3EA,EAAiB,QAAQ,IAAI,GAAG,UAC/B,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS1B,EAAiB,QAAQ,IAAI,GAAG;AAAA,IAAA;AAAA,EAAA,GAG5CA,EAAiB,QAAQ,IAAI,GAAG,QAC/B,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS1B,EAAiB,QAAQ,IAAI,GAAG;AAAA,IAAA;AAAA,EAAA,GAG5CA,EAAiB,QAAQ,IAAI,GAAG,cAC/B,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS1B,EAAiB,QAAQ,IAAI,GAAG;AAAA,IAAA;AAAA,EAAA,GAG5CA,EAAiB,QAAQ,IAAI,KAAK,UACjC,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS1B,EAAiB,QAAQ,IAAI,IAAI;AAAA,IAAA;AAAA,EAAA,GAG7CA,EAAiB,QAAQ,IAAI,KAAK,QACjC,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS1B,EAAiB,QAAQ,IAAI,IAAI;AAAA,IAAA;AAAA,EAAA,GAG7CA,EAAiB,QAAQ,IAAI,KAAK,cACjC,gBAAA0B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,SAAS1B,EAAiB,QAAQ,IAAI,IAAI;AAAA,IAAA;AAAA,EAAA,CAGhD,CAEJ,CAEJ,CAEJ;AAEJ;"}
|
package/dist/i18n.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { d as a } from "./defineMiddleware-VdHQuiUc.js";
|
|
2
|
+
function n(r, d) {
|
|
3
|
+
return a((e, l) => r(
|
|
4
|
+
e.request,
|
|
5
|
+
({ request: o, locale: t }) => (e.locals.locale = t, l(o)),
|
|
6
|
+
d
|
|
7
|
+
));
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
n as fromFetchMiddleware
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=i18n.js.map
|
package/dist/i18n.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sources":["../src/i18n/middleware.ts"],"sourcesContent":["import { defineMiddleware } from '../middleware/defineMiddleware';\nimport type { MiddlewareHandler } from '../middleware/types';\nimport type { FetchLocaleMiddleware } from './types';\n\n/**\n * Adapt a fetch-based locale middleware — e.g. Paraglide's own\n * `paraglideMiddleware` — into an l5e `MiddlewareHandler`.\n *\n * l5e doesn't ship its own locale-detection/URL-localization logic (strip\n * prefix, cookie, redirect) or its own `getLocale()`: libraries like\n * Paraglide already do both well, including an ambient `getLocale()` backed\n * by their own `AsyncLocalStorage`. This adapter is only the bridge — it\n * hands `context.request` to the library's middleware and, once resolved,\n * (1) continues the chain by calling `next(request)` *synchronously inside*\n * the library's own resolve callback, so the library's `AsyncLocalStorage`\n * scope (already wrapping that callback) naturally extends over the rest of\n * the request — loaders, route handler, every component — meaning the\n * library's own `getLocale()` just works, no bridging needed; and (2) writes\n * the resolved locale onto `context.locals.locale` too, since that's the\n * idiomatic place other l5e code (global-loader's `lang`, cache tags, ...)\n * already reads request-scoped values from — see the `locals` docs.\n *\n * @example\n * ```ts\n * // src/middleware.ts\n * import { sequence } from '@withl5e/l5e/middleware';\n * import { fromFetchMiddleware } from '@withl5e/l5e/i18n';\n * import { paraglideMiddleware } from '~/paraglide/server.js';\n *\n * export const onRequest = sequence(fromFetchMiddleware(paraglideMiddleware));\n *\n * // Anywhere in the app — loaders, components, plain utils:\n * import { getLocale } from '~/paraglide/runtime.js'; // Paraglide's own, ambient\n * ```\n */\nexport function fromFetchMiddleware<TLocale extends string = string, TOptions = unknown>(\n middleware: FetchLocaleMiddleware<TLocale, TOptions>,\n options?: TOptions,\n): MiddlewareHandler {\n return defineMiddleware((context, next) => {\n return middleware(\n context.request,\n ({ request, locale }) => {\n context.locals.locale = locale;\n return next(request);\n },\n options,\n );\n });\n}\n"],"names":["fromFetchMiddleware","middleware","options","defineMiddleware","context","next","request","locale"],"mappings":";AAmCO,SAASA,EACdC,GACAC,GACmB;AACnB,SAAOC,EAAiB,CAACC,GAASC,MACzBJ;AAAA,IACLG,EAAQ;AAAA,IACR,CAAC,EAAE,SAAAE,GAAS,QAAAC,SACVH,EAAQ,OAAO,SAASG,GACjBF,EAAKC,CAAO;AAAA,IAErBJ;AAAA,EAAA,CAEH;AACH;"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { d as I } from "./defineMiddleware-VdHQuiUc.js";
|
|
2
|
+
var w = {}, O;
|
|
3
|
+
function T() {
|
|
4
|
+
if (O) return w;
|
|
5
|
+
O = 1, Object.defineProperty(w, "__esModule", { value: !0 }), w.parseCookie = g, w.parse = g, w.stringifyCookie = y, w.stringifySetCookie = x, w.serialize = x, w.parseSetCookie = v, w.stringifySetCookie = x, w.serialize = x;
|
|
5
6
|
const n = /^[\u0021-\u003A\u003C\u003E-\u007E]+$/, i = /^[\u0021-\u003A\u003C-\u007E]*$/, r = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i, u = /^[\u0020-\u003A\u003D-\u007E]*$/, o = /^-?\d+$/, p = Object.prototype.toString, h = /* @__PURE__ */ (() => {
|
|
6
7
|
const t = function() {
|
|
7
8
|
};
|
|
@@ -66,7 +67,7 @@ function L() {
|
|
|
66
67
|
a += "; Path=" + e.path;
|
|
67
68
|
}
|
|
68
69
|
if (e.expires) {
|
|
69
|
-
if (!
|
|
70
|
+
if (!j(e.expires) || !Number.isFinite(e.expires.valueOf()))
|
|
70
71
|
throw new TypeError(`option expires is invalid: ${e.expires}`);
|
|
71
72
|
a += "; Expires=" + e.expires.toUTCString();
|
|
72
73
|
}
|
|
@@ -108,8 +109,8 @@ function L() {
|
|
|
108
109
|
};
|
|
109
110
|
let a = d + 1;
|
|
110
111
|
for (; a < e; ) {
|
|
111
|
-
const b = C(t, a, e), E = $(t, a, b),
|
|
112
|
-
switch (
|
|
112
|
+
const b = C(t, a, e), E = $(t, a, b), L = E === -1 ? k(t, a, b) : k(t, a, E), m = E === -1 ? void 0 : k(t, E + 1, b);
|
|
113
|
+
switch (L.toLowerCase()) {
|
|
113
114
|
case "httponly":
|
|
114
115
|
c.httpOnly = !0;
|
|
115
116
|
break;
|
|
@@ -183,20 +184,20 @@ function L() {
|
|
|
183
184
|
return t;
|
|
184
185
|
}
|
|
185
186
|
}
|
|
186
|
-
function
|
|
187
|
+
function j(t) {
|
|
187
188
|
return p.call(t) === "[object Date]";
|
|
188
189
|
}
|
|
189
190
|
return w;
|
|
190
191
|
}
|
|
191
|
-
var
|
|
192
|
-
function
|
|
192
|
+
var z = /* @__PURE__ */ T();
|
|
193
|
+
function P(n) {
|
|
193
194
|
if (!n) return {};
|
|
194
|
-
const i =
|
|
195
|
+
const i = z.parse(n), r = {};
|
|
195
196
|
for (const [u, o] of Object.entries(i))
|
|
196
197
|
o !== void 0 && (r[u] = o);
|
|
197
198
|
return r;
|
|
198
199
|
}
|
|
199
|
-
function
|
|
200
|
+
function F(n) {
|
|
200
201
|
const i = new Headers();
|
|
201
202
|
return Object.entries(n.headers).forEach(([r, u]) => {
|
|
202
203
|
if (u !== void 0) {
|
|
@@ -208,24 +209,21 @@ function N(n) {
|
|
|
208
209
|
}
|
|
209
210
|
}), i;
|
|
210
211
|
}
|
|
211
|
-
function
|
|
212
|
-
return n;
|
|
213
|
-
}
|
|
214
|
-
function F(...n) {
|
|
212
|
+
function H(...n) {
|
|
215
213
|
const i = n.filter(Boolean), r = i.length;
|
|
216
|
-
return r ? (u, o) => {
|
|
214
|
+
return r ? I((u, o) => {
|
|
217
215
|
let p;
|
|
218
216
|
return h(0, u);
|
|
219
217
|
function h(g, y) {
|
|
220
218
|
const x = i[g];
|
|
221
|
-
return x(y, async (v) => g < r - 1 ? (v && (p = v,
|
|
219
|
+
return x(y, async (v) => g < r - 1 ? (v && (p = v, D(y, v)), h(g + 1, y)) : o(v ?? p));
|
|
222
220
|
}
|
|
223
|
-
} : (u, o) => o();
|
|
221
|
+
}) : I((u, o) => o());
|
|
224
222
|
}
|
|
225
|
-
function
|
|
223
|
+
function D(n, i) {
|
|
226
224
|
let r;
|
|
227
225
|
i instanceof Request ? r = i : i instanceof URL ? r = new Request(i.href, n.request.clone()) : r = new Request(new URL(i, n.url).href, n.request.clone());
|
|
228
|
-
const u = n.url, o = new URL(r.url), p =
|
|
226
|
+
const u = n.url, o = new URL(r.url), p = P(r.headers.get("cookie") ?? void 0);
|
|
229
227
|
if (n.request = r, n.url = o, n.cookies = p, n.requestInfo) {
|
|
230
228
|
const h = {};
|
|
231
229
|
r.headers.forEach((g, y) => {
|
|
@@ -233,7 +231,7 @@ function z(n, i) {
|
|
|
233
231
|
}), n.requestInfo = {
|
|
234
232
|
...n.requestInfo,
|
|
235
233
|
url: o,
|
|
236
|
-
path:
|
|
234
|
+
path: M(o, u, n.requestInfo.path),
|
|
237
235
|
pathname: o.pathname,
|
|
238
236
|
method: r.method,
|
|
239
237
|
headers: h,
|
|
@@ -242,7 +240,7 @@ function z(n, i) {
|
|
|
242
240
|
};
|
|
243
241
|
}
|
|
244
242
|
}
|
|
245
|
-
function
|
|
243
|
+
function M(n, i, r) {
|
|
246
244
|
const u = `${n.pathname}${n.search}` || "/";
|
|
247
245
|
if (!r)
|
|
248
246
|
return u;
|
|
@@ -258,14 +256,14 @@ function D(n, i, r) {
|
|
|
258
256
|
const h = n.pathname.slice(p.length) || "/";
|
|
259
257
|
return `${h.startsWith("/") ? h : `/${h}`}${n.search}`;
|
|
260
258
|
}
|
|
261
|
-
function
|
|
259
|
+
function V({
|
|
262
260
|
request: n,
|
|
263
261
|
requestInfo: i,
|
|
264
262
|
locals: r = {},
|
|
265
263
|
clientAddress: u
|
|
266
264
|
}) {
|
|
267
265
|
const o = {
|
|
268
|
-
cookies:
|
|
266
|
+
cookies: P(n.headers.get("cookie") ?? void 0),
|
|
269
267
|
request: n,
|
|
270
268
|
requestInfo: i,
|
|
271
269
|
url: new URL(n.url),
|
|
@@ -300,19 +298,18 @@ function H({
|
|
|
300
298
|
new Response(null, {
|
|
301
299
|
status: 307,
|
|
302
300
|
headers: {
|
|
303
|
-
"X-L5E-Rewrite":
|
|
301
|
+
"X-L5E-Rewrite": N(p, o.url)
|
|
304
302
|
}
|
|
305
303
|
})
|
|
306
304
|
), o;
|
|
307
305
|
}
|
|
308
|
-
function
|
|
306
|
+
function N(n, i) {
|
|
309
307
|
return n instanceof Request ? n.url : n instanceof URL ? n.href : new URL(n, i).href;
|
|
310
308
|
}
|
|
311
309
|
export {
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
F as s
|
|
310
|
+
F as a,
|
|
311
|
+
V as c,
|
|
312
|
+
P as p,
|
|
313
|
+
H as s
|
|
317
314
|
};
|
|
318
|
-
//# sourceMappingURL=index-
|
|
315
|
+
//# sourceMappingURL=index-CybB8Tdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CybB8Tdk.js","sources":["../../../node_modules/.pnpm/cookie@1.1.1/node_modules/cookie/dist/index.js","../src/core/request.ts","../src/middleware/sequence.ts","../src/middleware/index.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseCookie = parseCookie;\nexports.parse = parseCookie;\nexports.stringifyCookie = stringifyCookie;\nexports.stringifySetCookie = stringifySetCookie;\nexports.serialize = stringifySetCookie;\nexports.parseSetCookie = parseSetCookie;\nexports.stringifySetCookie = stringifySetCookie;\nexports.serialize = stringifySetCookie;\n/**\n * RegExp to match cookie-name in RFC 6265 sec 4.1.1\n * This refers out to the obsoleted definition of token in RFC 2616 sec 2.2\n * which has been replaced by the token definition in RFC 7230 appendix B.\n *\n * cookie-name = token\n * token = 1*tchar\n * tchar = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" /\n * \"*\" / \"+\" / \"-\" / \".\" / \"^\" / \"_\" /\n * \"`\" / \"|\" / \"~\" / DIGIT / ALPHA\n *\n * Note: Allowing more characters - https://github.com/jshttp/cookie/issues/191\n * Allow same range as cookie value, except `=`, which delimits end of name.\n */\nconst cookieNameRegExp = /^[\\u0021-\\u003A\\u003C\\u003E-\\u007E]+$/;\n/**\n * RegExp to match cookie-value in RFC 6265 sec 4.1.1\n *\n * cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n * cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n * ; US-ASCII characters excluding CTLs,\n * ; whitespace DQUOTE, comma, semicolon,\n * ; and backslash\n *\n * Allowing more characters: https://github.com/jshttp/cookie/issues/191\n * Comma, backslash, and DQUOTE are not part of the parsing algorithm.\n */\nconst cookieValueRegExp = /^[\\u0021-\\u003A\\u003C-\\u007E]*$/;\n/**\n * RegExp to match domain-value in RFC 6265 sec 4.1.1\n *\n * domain-value = <subdomain>\n * ; defined in [RFC1034], Section 3.5, as\n * ; enhanced by [RFC1123], Section 2.1\n * <subdomain> = <label> | <subdomain> \".\" <label>\n * <label> = <let-dig> [ [ <ldh-str> ] <let-dig> ]\n * Labels must be 63 characters or less.\n * 'let-dig' not 'letter' in the first char, per RFC1123\n * <ldh-str> = <let-dig-hyp> | <let-dig-hyp> <ldh-str>\n * <let-dig-hyp> = <let-dig> | \"-\"\n * <let-dig> = <letter> | <digit>\n * <letter> = any one of the 52 alphabetic characters A through Z in\n * upper case and a through z in lower case\n * <digit> = any one of the ten digits 0 through 9\n *\n * Keep support for leading dot: https://github.com/jshttp/cookie/issues/173\n *\n * > (Note that a leading %x2E (\".\"), if present, is ignored even though that\n * character is not permitted, but a trailing %x2E (\".\"), if present, will\n * cause the user agent to ignore the attribute.)\n */\nconst domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i;\n/**\n * RegExp to match path-value in RFC 6265 sec 4.1.1\n *\n * path-value = <any CHAR except CTLs or \";\">\n * CHAR = %x01-7F\n * ; defined in RFC 5234 appendix B.1\n */\nconst pathValueRegExp = /^[\\u0020-\\u003A\\u003D-\\u007E]*$/;\n/**\n * RegExp to match max-age-value in RFC 6265 sec 5.6.2\n */\nconst maxAgeRegExp = /^-?\\d+$/;\nconst __toString = Object.prototype.toString;\nconst NullObject = /* @__PURE__ */ (() => {\n const C = function () { };\n C.prototype = Object.create(null);\n return C;\n})();\n/**\n * Parse a `Cookie` header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n */\nfunction parseCookie(str, options) {\n const obj = new NullObject();\n const len = str.length;\n // RFC 6265 sec 4.1.1, RFC 2616 2.2 defines a cookie name consists of one char minimum, plus '='.\n if (len < 2)\n return obj;\n const dec = options?.decode || decode;\n let index = 0;\n do {\n const eqIdx = eqIndex(str, index, len);\n if (eqIdx === -1)\n break; // No more cookie pairs.\n const endIdx = endIndex(str, index, len);\n if (eqIdx > endIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(\";\", eqIdx - 1) + 1;\n continue;\n }\n const key = valueSlice(str, index, eqIdx);\n // only assign once\n if (obj[key] === undefined) {\n obj[key] = dec(valueSlice(str, eqIdx + 1, endIdx));\n }\n index = endIdx + 1;\n } while (index < len);\n return obj;\n}\n/**\n * Stringifies an object into an HTTP `Cookie` header.\n */\nfunction stringifyCookie(cookie, options) {\n const enc = options?.encode || encodeURIComponent;\n const cookieStrings = [];\n for (const name of Object.keys(cookie)) {\n const val = cookie[name];\n if (val === undefined)\n continue;\n if (!cookieNameRegExp.test(name)) {\n throw new TypeError(`cookie name is invalid: ${name}`);\n }\n const value = enc(val);\n if (!cookieValueRegExp.test(value)) {\n throw new TypeError(`cookie val is invalid: ${val}`);\n }\n cookieStrings.push(`${name}=${value}`);\n }\n return cookieStrings.join(\"; \");\n}\nfunction stringifySetCookie(_name, _val, _opts) {\n const cookie = typeof _name === \"object\"\n ? _name\n : { ..._opts, name: _name, value: String(_val) };\n const options = typeof _val === \"object\" ? _val : _opts;\n const enc = options?.encode || encodeURIComponent;\n if (!cookieNameRegExp.test(cookie.name)) {\n throw new TypeError(`argument name is invalid: ${cookie.name}`);\n }\n const value = cookie.value ? enc(cookie.value) : \"\";\n if (!cookieValueRegExp.test(value)) {\n throw new TypeError(`argument val is invalid: ${cookie.value}`);\n }\n let str = cookie.name + \"=\" + value;\n if (cookie.maxAge !== undefined) {\n if (!Number.isInteger(cookie.maxAge)) {\n throw new TypeError(`option maxAge is invalid: ${cookie.maxAge}`);\n }\n str += \"; Max-Age=\" + cookie.maxAge;\n }\n if (cookie.domain) {\n if (!domainValueRegExp.test(cookie.domain)) {\n throw new TypeError(`option domain is invalid: ${cookie.domain}`);\n }\n str += \"; Domain=\" + cookie.domain;\n }\n if (cookie.path) {\n if (!pathValueRegExp.test(cookie.path)) {\n throw new TypeError(`option path is invalid: ${cookie.path}`);\n }\n str += \"; Path=\" + cookie.path;\n }\n if (cookie.expires) {\n if (!isDate(cookie.expires) || !Number.isFinite(cookie.expires.valueOf())) {\n throw new TypeError(`option expires is invalid: ${cookie.expires}`);\n }\n str += \"; Expires=\" + cookie.expires.toUTCString();\n }\n if (cookie.httpOnly) {\n str += \"; HttpOnly\";\n }\n if (cookie.secure) {\n str += \"; Secure\";\n }\n if (cookie.partitioned) {\n str += \"; Partitioned\";\n }\n if (cookie.priority) {\n const priority = typeof cookie.priority === \"string\"\n ? cookie.priority.toLowerCase()\n : undefined;\n switch (priority) {\n case \"low\":\n str += \"; Priority=Low\";\n break;\n case \"medium\":\n str += \"; Priority=Medium\";\n break;\n case \"high\":\n str += \"; Priority=High\";\n break;\n default:\n throw new TypeError(`option priority is invalid: ${cookie.priority}`);\n }\n }\n if (cookie.sameSite) {\n const sameSite = typeof cookie.sameSite === \"string\"\n ? cookie.sameSite.toLowerCase()\n : cookie.sameSite;\n switch (sameSite) {\n case true:\n case \"strict\":\n str += \"; SameSite=Strict\";\n break;\n case \"lax\":\n str += \"; SameSite=Lax\";\n break;\n case \"none\":\n str += \"; SameSite=None\";\n break;\n default:\n throw new TypeError(`option sameSite is invalid: ${cookie.sameSite}`);\n }\n }\n return str;\n}\n/**\n * Deserialize a `Set-Cookie` header into an object.\n *\n * deserialize('foo=bar; httpOnly')\n * => { name: 'foo', value: 'bar', httpOnly: true }\n */\nfunction parseSetCookie(str, options) {\n const dec = options?.decode || decode;\n const len = str.length;\n const endIdx = endIndex(str, 0, len);\n const eqIdx = eqIndex(str, 0, endIdx);\n const setCookie = eqIdx === -1\n ? { name: \"\", value: dec(valueSlice(str, 0, endIdx)) }\n : {\n name: valueSlice(str, 0, eqIdx),\n value: dec(valueSlice(str, eqIdx + 1, endIdx)),\n };\n let index = endIdx + 1;\n while (index < len) {\n const endIdx = endIndex(str, index, len);\n const eqIdx = eqIndex(str, index, endIdx);\n const attr = eqIdx === -1\n ? valueSlice(str, index, endIdx)\n : valueSlice(str, index, eqIdx);\n const val = eqIdx === -1 ? undefined : valueSlice(str, eqIdx + 1, endIdx);\n switch (attr.toLowerCase()) {\n case \"httponly\":\n setCookie.httpOnly = true;\n break;\n case \"secure\":\n setCookie.secure = true;\n break;\n case \"partitioned\":\n setCookie.partitioned = true;\n break;\n case \"domain\":\n setCookie.domain = val;\n break;\n case \"path\":\n setCookie.path = val;\n break;\n case \"max-age\":\n if (val && maxAgeRegExp.test(val))\n setCookie.maxAge = Number(val);\n break;\n case \"expires\":\n if (!val)\n break;\n const date = new Date(val);\n if (Number.isFinite(date.valueOf()))\n setCookie.expires = date;\n break;\n case \"priority\":\n if (!val)\n break;\n const priority = val.toLowerCase();\n if (priority === \"low\" ||\n priority === \"medium\" ||\n priority === \"high\") {\n setCookie.priority = priority;\n }\n break;\n case \"samesite\":\n if (!val)\n break;\n const sameSite = val.toLowerCase();\n if (sameSite === \"lax\" ||\n sameSite === \"strict\" ||\n sameSite === \"none\") {\n setCookie.sameSite = sameSite;\n }\n break;\n }\n index = endIdx + 1;\n }\n return setCookie;\n}\n/**\n * Find the `;` character between `min` and `len` in str.\n */\nfunction endIndex(str, min, len) {\n const index = str.indexOf(\";\", min);\n return index === -1 ? len : index;\n}\n/**\n * Find the `=` character between `min` and `max` in str.\n */\nfunction eqIndex(str, min, max) {\n const index = str.indexOf(\"=\", min);\n return index < max ? index : -1;\n}\n/**\n * Slice out a value between startPod to max.\n */\nfunction valueSlice(str, min, max) {\n let start = min;\n let end = max;\n do {\n const code = str.charCodeAt(start);\n if (code !== 0x20 /* */ && code !== 0x09 /* \\t */)\n break;\n } while (++start < end);\n while (end > start) {\n const code = str.charCodeAt(end - 1);\n if (code !== 0x20 /* */ && code !== 0x09 /* \\t */)\n break;\n end--;\n }\n return str.slice(start, end);\n}\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n */\nfunction decode(str) {\n if (str.indexOf(\"%\") === -1)\n return str;\n try {\n return decodeURIComponent(str);\n }\n catch (e) {\n return str;\n }\n}\n/**\n * Determine if value is a Date.\n */\nfunction isDate(val) {\n return __toString.call(val) === \"[object Date]\";\n}\n//# sourceMappingURL=index.js.map","import { parse as parseCookieHeader } from 'cookie';\nimport type { Request } from 'express';\n\nexport function parseCookies(cookieHeader?: string): Record<string, string> {\n if (!cookieHeader) return {};\n\n // `cookie.parse` decodes values safely (malformed %-sequences fall back to the\n // raw value instead of throwing) and ignores prototype keys.\n const parsed = parseCookieHeader(cookieHeader);\n const cookies: Record<string, string> = {};\n for (const [name, value] of Object.entries(parsed)) {\n if (value !== undefined) {\n cookies[name] = value;\n }\n }\n return cookies;\n}\n\nexport function createHeadersFromExpressRequest(req: Request): Headers {\n const headers = new Headers();\n\n Object.entries(req.headers).forEach(([key, value]) => {\n if (value === undefined) return;\n if (Array.isArray(value)) {\n value.forEach((item) => headers.append(key, item));\n return;\n }\n headers.set(key, value);\n });\n\n return headers;\n}\n","import { parseCookies } from '../core/request';\nimport { defineMiddleware } from './defineMiddleware';\nimport type { MiddlewareContext, MiddlewareHandler, RewritePayload } from './types';\n\n// From SvelteKit via Astro: compose middleware handlers in declaration order.\nexport function sequence(...handlers: Array<MiddlewareHandler | false | null | undefined>) {\n const filtered = handlers.filter(Boolean) as MiddlewareHandler[];\n const length = filtered.length;\n\n if (!length) {\n return defineMiddleware((_context, next) => {\n return next();\n });\n }\n\n return defineMiddleware((context, next) => {\n let carriedPayload: RewritePayload | undefined;\n return applyHandle(0, context);\n\n function applyHandle(\n i: number,\n handleContext: MiddlewareContext,\n ): Promise<Response> | Response {\n const handle = filtered[i];\n\n return handle(handleContext, async (payload?: RewritePayload) => {\n if (i < length - 1) {\n if (payload) {\n carriedPayload = payload;\n updateContextForRewrite(handleContext, payload);\n }\n return applyHandle(i + 1, handleContext);\n }\n\n return next(payload ?? carriedPayload);\n });\n }\n });\n}\n\nfunction updateContextForRewrite(context: MiddlewareContext, payload: RewritePayload): void {\n let request: Request;\n\n if (payload instanceof Request) {\n request = payload;\n } else if (payload instanceof URL) {\n request = new Request(payload.href, context.request.clone());\n } else {\n request = new Request(new URL(payload, context.url).href, context.request.clone());\n }\n\n const previousUrl = context.url;\n const nextUrl = new URL(request.url);\n const nextCookies = parseCookies(request.headers.get('cookie') ?? undefined);\n context.request = request;\n context.url = nextUrl;\n context.cookies = nextCookies;\n\n if (context.requestInfo) {\n const headers: Record<string, string> = {};\n request.headers.forEach((value, key) => {\n headers[key] = value;\n });\n\n context.requestInfo = {\n ...context.requestInfo,\n url: nextUrl,\n path: getRequestInfoPath(nextUrl, previousUrl, context.requestInfo.path),\n pathname: nextUrl.pathname,\n method: request.method,\n headers,\n cookies: nextCookies,\n query: Object.fromEntries(nextUrl.searchParams.entries()),\n };\n }\n}\n\nfunction getRequestInfoPath(nextUrl: URL, previousUrl: URL, previousPath?: string): string {\n const nextPath = `${nextUrl.pathname}${nextUrl.search}` || '/';\n if (!previousPath) {\n return nextPath;\n }\n\n const previousPathname = previousPath.split('?')[0] || '/';\n if (\n previousPathname === previousUrl.pathname ||\n !previousUrl.pathname.endsWith(previousPathname)\n ) {\n return nextPath;\n }\n\n const basePathname = previousUrl.pathname.slice(\n 0,\n previousUrl.pathname.length - previousPathname.length,\n );\n if (!basePathname || !nextUrl.pathname.startsWith(basePathname)) {\n return nextPath;\n }\n\n const strippedPathname = nextUrl.pathname.slice(basePathname.length) || '/';\n const normalizedPathname = strippedPathname.startsWith('/')\n ? strippedPathname\n : `/${strippedPathname}`;\n return `${normalizedPathname}${nextUrl.search}`;\n}\n","import { parseCookies } from '../core/request';\nimport { defineMiddleware } from './defineMiddleware';\nimport { sequence } from './sequence';\nimport type { CreateContext, MiddlewareContext, RewritePayload } from './types';\n\nexport type {\n CreateContext,\n MiddlewareContext,\n MiddlewareHandler,\n MiddlewareNext,\n RewritePayload,\n} from './types';\n\nexport { defineMiddleware, sequence };\n\nexport function createContext({\n request,\n requestInfo,\n locals = {},\n clientAddress,\n}: CreateContext): MiddlewareContext {\n const context = {\n cookies: parseCookies(request.headers.get('cookie') ?? undefined),\n request,\n requestInfo,\n url: new URL(request.url),\n redirect(path: string | URL, status = 302) {\n return new Response(null, {\n status,\n headers: {\n Location: path.toString(),\n },\n });\n },\n rewrite(payload: RewritePayload) {\n return Promise.resolve(new Response(null));\n },\n get clientAddress() {\n if (clientAddress) {\n return clientAddress;\n }\n throw new Error('clientAddress is not available for this request.');\n },\n } as Omit<MiddlewareContext, 'locals'> & {\n locals: Record<string, unknown>;\n };\n\n Object.defineProperty(context, 'locals', {\n enumerable: true,\n get() {\n if (typeof locals !== 'object' || locals === null || Array.isArray(locals)) {\n throw new Error('Middleware locals must be a plain object.');\n }\n return locals;\n },\n set() {\n throw new Error('Middleware locals cannot be reassigned. Mutate its properties instead.');\n },\n });\n\n context.rewrite = (payload: RewritePayload) => {\n return Promise.resolve(\n new Response(null, {\n status: 307,\n headers: {\n 'X-L5E-Rewrite': stringifyRewritePayload(payload, context.url),\n },\n }),\n );\n };\n\n return context;\n}\n\nfunction stringifyRewritePayload(payload: RewritePayload, currentUrl: URL): string {\n if (payload instanceof Request) {\n return payload.url;\n }\n\n if (payload instanceof URL) {\n return payload.href;\n }\n\n return new URL(payload, currentUrl).href;\n}\n"],"names":["dist","parseCookie","stringifyCookie","stringifySetCookie","parseSetCookie","cookieNameRegExp","cookieValueRegExp","domainValueRegExp","pathValueRegExp","maxAgeRegExp","__toString","NullObject","C","str","options","obj","len","dec","decode","index","eqIdx","eqIndex","endIdx","endIndex","key","valueSlice","cookie","enc","cookieStrings","name","val","value","_name","_val","_opts","isDate","setCookie","attr","date","priority","sameSite","min","max","start","end","code","parseCookies","cookieHeader","parsed","parseCookieHeader","cookies","createHeadersFromExpressRequest","req","headers","item","sequence","handlers","filtered","length","defineMiddleware","context","next","carriedPayload","applyHandle","i","handleContext","handle","payload","updateContextForRewrite","_context","request","previousUrl","nextUrl","nextCookies","getRequestInfoPath","previousPath","nextPath","previousPathname","basePathname","strippedPathname","createContext","requestInfo","locals","clientAddress","path","status","stringifyRewritePayload","currentUrl"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/index.js
CHANGED
|
@@ -1,33 +1,34 @@
|
|
|
1
|
-
import { B as a, H as
|
|
2
|
-
import { F as c, H as p, a as
|
|
1
|
+
import { B as a, H as r, I as t, N as n, R as o, S as d } from "./exceptions-CHPz01DJ.js";
|
|
2
|
+
import { F as c, H as p, a as x, b as l, c as m, g, d as E, e as u, f, h as S, i as C, j as I, k as H, l as R, p as h, n as v, r as T, o as q, q as F, s as M, t as N, u as b, v as w, w as J } from "./jsx-runtime-Bokflh8Q.js";
|
|
3
3
|
import { coreVite as j } from "./vite-plugin.js";
|
|
4
|
-
import { c as P,
|
|
5
|
-
import { createServer as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { c as P, s as k } from "./index-CybB8Tdk.js";
|
|
5
|
+
import { createServer as A, startServer as D } from "./server.js";
|
|
6
|
+
import { d as O } from "./defineMiddleware-VdHQuiUc.js";
|
|
7
|
+
import { e as Y, a as _, r as z, b as G } from "./render-DTXfJu0d.js";
|
|
8
|
+
import { render as Q } from "./entry-server.js";
|
|
8
9
|
export {
|
|
9
10
|
a as BadRequestException,
|
|
10
11
|
c as Fragment,
|
|
11
12
|
p as HEAD_PRIORITY,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
x as Head,
|
|
14
|
+
r as HttpException,
|
|
15
|
+
t as InternalServerErrorException,
|
|
15
16
|
n as NotFoundException,
|
|
16
17
|
o as RedirectException,
|
|
17
18
|
d as ServiceUnavailableException,
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
l as addCacheTag,
|
|
20
|
+
m as cloneElement,
|
|
20
21
|
j as coreVite,
|
|
21
22
|
P as createContext,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
A as createServer,
|
|
24
|
+
O as defineMiddleware,
|
|
25
|
+
Y as escapeHTML,
|
|
26
|
+
_ as escapeProp,
|
|
27
|
+
g as getCacheTags,
|
|
27
28
|
E as getClientJsEntries,
|
|
28
29
|
u as getCssEntries,
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
f as getHeadContent,
|
|
31
|
+
S as getIslandEntries,
|
|
31
32
|
C as getSchemas,
|
|
32
33
|
I as getSsrIslands,
|
|
33
34
|
H as isValidElement,
|
|
@@ -36,14 +37,14 @@ export {
|
|
|
36
37
|
v as pushSchema,
|
|
37
38
|
T as registerIsland,
|
|
38
39
|
q as registerSsrIsland,
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
Q as render,
|
|
41
|
+
z as renderJsxToHtmlString,
|
|
42
|
+
G as renderToRenderedNode,
|
|
42
43
|
F as resolveMetadata,
|
|
43
44
|
M as runInRenderContext,
|
|
44
|
-
|
|
45
|
+
k as sequence,
|
|
45
46
|
N as setViewName,
|
|
46
|
-
|
|
47
|
+
D as startServer,
|
|
47
48
|
b as useClientJs,
|
|
48
49
|
w as useCss,
|
|
49
50
|
J as useRequest
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
package/dist/middleware.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { c as
|
|
1
|
+
import { c as a, s as o } from "./index-CybB8Tdk.js";
|
|
2
|
+
import { d as t } from "./defineMiddleware-VdHQuiUc.js";
|
|
2
3
|
export {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
a as createContext,
|
|
5
|
+
t as defineMiddleware,
|
|
6
|
+
o as sequence
|
|
6
7
|
};
|
|
7
8
|
//# sourceMappingURL=middleware.js.map
|
package/dist/middleware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"middleware.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
package/dist/seo.js
CHANGED