astro 7.0.0-alpha.0 → 7.0.0-alpha.2
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/components/Code.astro +1 -1
- package/dist/actions/handler.d.ts +32 -0
- package/dist/actions/handler.js +45 -0
- package/dist/actions/runtime/server.js +1 -1
- package/dist/assets/build/generate.js +1 -1
- package/dist/assets/build/remote.d.ts +3 -2
- package/dist/assets/build/remote.js +16 -9
- package/dist/assets/endpoint/dev.js +1 -1
- package/dist/assets/endpoint/generic.js +8 -20
- package/dist/assets/endpoint/loadImage.d.ts +11 -0
- package/dist/assets/endpoint/loadImage.js +19 -0
- package/dist/assets/endpoint/shared.js +7 -2
- package/dist/assets/fonts/config.d.ts +4 -4
- package/dist/assets/fonts/core/optimize-fallbacks.js +38 -13
- package/dist/assets/fonts/definitions.d.ts +2 -2
- package/dist/assets/fonts/infra/system-fallbacks-provider.d.ts +2 -2
- package/dist/assets/fonts/infra/system-fallbacks-provider.js +46 -9
- package/dist/assets/fonts/types.d.ts +1 -0
- package/dist/assets/index.d.ts +1 -0
- package/dist/assets/index.js +2 -0
- package/dist/assets/internal.js +22 -3
- package/dist/assets/services/service.d.ts +1 -1
- package/dist/assets/services/service.js +9 -9
- package/dist/assets/services/sharp.js +53 -18
- package/dist/assets/utils/generateImageStylesCSS.js +26 -6
- package/dist/assets/utils/index.d.ts +1 -0
- package/dist/assets/utils/index.js +2 -0
- package/dist/assets/utils/inferSourceFormat.d.ts +8 -3
- package/dist/assets/utils/inferSourceFormat.js +15 -4
- package/dist/assets/utils/metadata.js +1 -1
- package/dist/assets/utils/redirectValidation.d.ts +48 -0
- package/dist/assets/utils/redirectValidation.js +48 -0
- package/dist/assets/utils/remoteProbe.js +25 -2
- package/dist/assets/utils/vendor/image-size/types/svg.js +1 -1
- package/dist/cli/add/index.js +7 -58
- package/dist/cli/dev/background.d.ts +16 -0
- package/dist/cli/dev/background.js +116 -0
- package/dist/cli/dev/index.js +82 -3
- package/dist/cli/dev/logs.d.ts +6 -0
- package/dist/cli/dev/logs.js +72 -0
- package/dist/cli/dev/status.d.ts +15 -0
- package/dist/cli/dev/status.js +27 -0
- package/dist/cli/dev/stop.d.ts +12 -0
- package/dist/cli/dev/stop.js +43 -0
- package/dist/cli/infra/build-time-astro-version-provider.js +1 -1
- package/dist/container/index.js +18 -14
- package/dist/content/content-layer.js +16 -11
- package/dist/content/data-store.d.ts +1 -1
- package/dist/content/loaders/types.d.ts +1 -1
- package/dist/content/runtime-assets.d.ts +2 -2
- package/dist/content/runtime.d.ts +1 -1
- package/dist/content/runtime.js +9 -4
- package/dist/content/server-listeners.js +0 -4
- package/dist/content/types-generator.js +5 -1
- package/dist/content/utils.d.ts +1 -1
- package/dist/content/utils.js +1 -1
- package/dist/content/vite-plugin-content-assets.js +1 -0
- package/dist/content/vite-plugin-content-virtual-mod.js +9 -1
- package/dist/core/app/base.d.ts +42 -15
- package/dist/core/app/base.js +151 -375
- package/dist/core/app/dev/app.d.ts +3 -2
- package/dist/core/app/dev/app.js +4 -60
- package/dist/core/app/entrypoints/node.d.ts +1 -1
- package/dist/core/app/entrypoints/node.js +2 -0
- package/dist/core/app/entrypoints/virtual/dev.js +2 -0
- package/dist/core/app/entrypoints/virtual/prod.js +4 -1
- package/dist/core/app/node.d.ts +16 -0
- package/dist/core/app/node.js +59 -13
- package/dist/core/app/prepare-response.d.ts +11 -0
- package/dist/core/app/prepare-response.js +18 -0
- package/dist/core/app/render-options.d.ts +11 -0
- package/dist/core/app/render-options.js +11 -0
- package/dist/core/base-pipeline.d.ts +48 -1
- package/dist/core/base-pipeline.js +63 -8
- package/dist/core/build/app.d.ts +3 -4
- package/dist/core/build/app.js +3 -17
- package/dist/core/build/generate.js +8 -1
- package/dist/core/build/index.d.ts +0 -11
- package/dist/core/build/index.js +0 -3
- package/dist/core/build/internal.d.ts +7 -0
- package/dist/core/build/plugins/plugin-chunk-imports.d.ts +6 -0
- package/dist/core/build/plugins/plugin-chunk-imports.js +29 -17
- package/dist/core/build/plugins/plugin-css.js +40 -1
- package/dist/core/build/plugins/plugin-internals.js +1 -1
- package/dist/core/build/plugins/plugin-manifest.js +11 -1
- package/dist/core/build/static-build.js +22 -141
- package/dist/core/build/types.d.ts +0 -1
- package/dist/core/build/util.js +8 -1
- package/dist/core/build/vite-build-config.d.ts +28 -0
- package/dist/core/build/vite-build-config.js +165 -0
- package/dist/core/cache/handler.d.ts +29 -0
- package/dist/core/cache/handler.js +81 -0
- package/dist/core/compile/style.js +18 -1
- package/dist/core/config/index.d.ts +1 -1
- package/dist/core/config/index.js +4 -1
- package/dist/core/config/merge.js +4 -0
- package/dist/core/config/schemas/base.d.ts +25 -13
- package/dist/core/config/schemas/base.js +39 -10
- package/dist/core/config/schemas/relative.d.ts +76 -49
- package/dist/core/config/schemas/relative.js +2 -3
- package/dist/core/config/settings.js +2 -4
- package/dist/core/config/tsconfig.d.ts +24 -9
- package/dist/core/config/tsconfig.js +54 -45
- package/dist/core/config/validate.js +59 -0
- package/dist/core/constants.d.ts +27 -1
- package/dist/core/constants.js +14 -1
- package/dist/core/cookies/cookies.d.ts +7 -2
- package/dist/core/cookies/cookies.js +11 -4
- package/dist/core/cookies/response.d.ts +1 -1
- package/dist/core/cookies/response.js +1 -2
- package/dist/core/create-vite.js +18 -1
- package/dist/core/csp/config.js +17 -5
- package/dist/core/csp/runtime.js +6 -4
- package/dist/core/dev/dev.d.ts +1 -0
- package/dist/core/dev/dev.js +4 -13
- package/dist/core/dev/lockfile.d.ts +54 -0
- package/dist/core/dev/lockfile.js +93 -0
- package/dist/core/errors/build-handler.d.ts +17 -0
- package/dist/core/errors/build-handler.js +22 -0
- package/dist/core/errors/default-handler.d.ts +14 -0
- package/dist/core/errors/default-handler.js +144 -0
- package/dist/core/errors/dev-handler.d.ts +21 -0
- package/dist/core/errors/dev-handler.js +82 -0
- package/dist/core/errors/errors-data.d.ts +43 -38
- package/dist/core/errors/errors-data.js +79 -73
- package/dist/core/errors/handler.d.ts +9 -0
- package/dist/core/errors/handler.js +0 -0
- package/dist/core/errors/zod-error-map.js +30 -1
- package/dist/core/fetch/default-handler.d.ts +17 -0
- package/dist/core/fetch/default-handler.js +45 -0
- package/dist/core/fetch/fetch-state.d.ts +230 -0
- package/dist/core/fetch/fetch-state.js +896 -0
- package/dist/core/fetch/index.d.ts +61 -0
- package/dist/core/fetch/index.js +121 -0
- package/dist/core/fetch/types.d.ts +25 -0
- package/dist/core/fetch/types.js +0 -0
- package/dist/core/fetch/vite-plugin.d.ts +5 -0
- package/dist/core/fetch/vite-plugin.js +76 -0
- package/dist/core/hono/index.d.ts +21 -0
- package/dist/core/hono/index.js +101 -0
- package/dist/core/i18n/domain.d.ts +12 -0
- package/dist/core/i18n/domain.js +66 -0
- package/dist/core/i18n/handler.d.ts +18 -0
- package/dist/core/i18n/handler.js +122 -0
- package/dist/core/logger/core.d.ts +9 -1
- package/dist/core/logger/core.js +17 -1
- package/dist/core/messages/runtime.d.ts +0 -3
- package/dist/core/messages/runtime.js +1 -9
- package/dist/core/middleware/astro-middleware.d.ts +27 -0
- package/dist/core/middleware/astro-middleware.js +51 -0
- package/dist/core/module-loader/vite.js +1 -2
- package/dist/core/pages/handler.d.ts +20 -0
- package/dist/core/pages/handler.js +75 -0
- package/dist/core/preview/index.js +6 -5
- package/dist/core/preview/static-preview-server.js +5 -2
- package/dist/core/redirects/render.d.ts +2 -2
- package/dist/core/redirects/render.js +7 -8
- package/dist/core/render/params-and-props.js +2 -2
- package/dist/core/render/route-cache.d.ts +1 -0
- package/dist/core/render/route-cache.js +4 -4
- package/dist/core/render/slots.js +9 -2
- package/dist/core/rewrites/handler.d.ts +37 -0
- package/dist/core/rewrites/handler.js +67 -0
- package/dist/core/routing/3xx.js +8 -4
- package/dist/core/routing/create-manifest.js +11 -1
- package/dist/core/routing/handler.d.ts +17 -0
- package/dist/core/routing/handler.js +171 -0
- package/dist/core/routing/match.d.ts +0 -7
- package/dist/core/routing/match.js +0 -5
- package/dist/core/routing/parse-route.js +1 -1
- package/dist/core/routing/pattern.js +1 -1
- package/dist/core/routing/rewrite.js +2 -5
- package/dist/core/routing/router.d.ts +8 -0
- package/dist/core/routing/router.js +28 -0
- package/dist/core/routing/trailing-slash-handler.d.ts +18 -0
- package/dist/core/routing/trailing-slash-handler.js +67 -0
- package/dist/core/routing/validation.js +1 -1
- package/dist/core/server-islands/vite-plugin-server-islands.d.ts +6 -1
- package/dist/core/server-islands/vite-plugin-server-islands.js +13 -3
- package/dist/core/session/config.d.ts +1 -1
- package/dist/core/session/drivers.d.ts +1 -1
- package/dist/core/session/handler.d.ts +11 -0
- package/dist/core/session/handler.js +33 -0
- package/dist/core/session/runtime.js +7 -2
- package/dist/core/util/normalized-url.d.ts +10 -0
- package/dist/core/util/normalized-url.js +24 -0
- package/dist/core/util/pathname.d.ts +10 -1
- package/dist/core/util/pathname.js +13 -4
- package/dist/environments.js +1 -1
- package/dist/events/session.d.ts +8 -0
- package/dist/events/session.js +11 -0
- package/dist/i18n/middleware.d.ts +10 -0
- package/dist/i18n/middleware.js +4 -88
- package/dist/i18n/utils.js +2 -2
- package/dist/jsx/rehype.d.ts +1 -1
- package/dist/manifest/virtual-module.js +3 -1
- package/dist/markdown/index.d.ts +4 -0
- package/dist/markdown/index.js +14 -0
- package/dist/prefetch/index.js +12 -7
- package/dist/prerender/utils.js +5 -1
- package/dist/runtime/client/dev-toolbar/apps/audit/rules/a11y.js +9 -0
- package/dist/runtime/server/astro-island.js +57 -20
- package/dist/runtime/server/astro-island.prebuilt-dev.d.ts +1 -1
- package/dist/runtime/server/astro-island.prebuilt-dev.js +1 -1
- package/dist/runtime/server/astro-island.prebuilt.d.ts +1 -1
- package/dist/runtime/server/astro-island.prebuilt.js +1 -1
- package/dist/runtime/server/jsx.js +1 -1
- package/dist/runtime/server/render/common.js +10 -4
- package/dist/runtime/server/render/component.js +8 -6
- package/dist/runtime/server/render/head.js +1 -5
- package/dist/runtime/server/render/server-islands.js +2 -1
- package/dist/runtime/server/render/util.js +2 -2
- package/dist/runtime/server/scripts.js +6 -0
- package/dist/runtime/server/transition.d.ts +1 -6
- package/dist/runtime/server/transition.js +0 -8
- package/dist/transitions/events.d.ts +0 -14
- package/dist/transitions/events.js +0 -14
- package/dist/transitions/index.d.ts +0 -1
- package/dist/transitions/index.js +0 -2
- package/dist/transitions/vite-plugin-transitions.js +2 -4
- package/dist/types/public/config.d.ts +96 -14
- package/dist/types/public/content.d.ts +5 -5
- package/dist/types/public/index.d.ts +2 -1
- package/dist/types/public/integrations.d.ts +11 -3
- package/dist/types/public/internal.d.ts +1 -1
- package/dist/types/public/manifest.d.ts +1 -1
- package/dist/virtual-modules/i18n.d.ts +2 -2
- package/dist/virtual-modules/i18n.js +1 -1
- package/dist/vite-plugin-app/app.d.ts +13 -6
- package/dist/vite-plugin-app/app.js +51 -89
- package/dist/vite-plugin-app/createAstroServerApp.d.ts +3 -1
- package/dist/vite-plugin-app/createAstroServerApp.js +4 -3
- package/dist/vite-plugin-astro-server/plugin.js +11 -5
- package/dist/vite-plugin-astro-server/route-guard.d.ts +33 -0
- package/dist/vite-plugin-astro-server/route-guard.js +42 -23
- package/dist/vite-plugin-dev-status/index.d.ts +2 -0
- package/dist/vite-plugin-dev-status/index.js +15 -0
- package/dist/vite-plugin-head/index.js +36 -19
- package/dist/vite-plugin-hmr-reload/index.d.ts +1 -1
- package/dist/vite-plugin-hmr-reload/index.js +23 -1
- package/dist/vite-plugin-integrations-container/index.js +15 -6
- package/dist/vite-plugin-markdown/content-entry-type.js +7 -4
- package/dist/vite-plugin-markdown/images.js +9 -11
- package/dist/vite-plugin-markdown/index.js +12 -11
- package/dist/vite-plugin-utils/index.d.ts +1 -0
- package/dist/vite-plugin-utils/index.js +10 -1
- package/package.json +23 -16
- package/templates/content/types.d.ts +1 -0
- package/types/transitions.d.ts +0 -7
- package/dist/core/render-context.d.ts +0 -77
- package/dist/core/render-context.js +0 -826
package/dist/events/session.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { detectAgenticEnvironment } from "am-i-vibing";
|
|
1
2
|
import { AstroConfigSchema } from "../core/config/schemas/index.js";
|
|
2
3
|
const EVENT_SESSION = "ASTRO_CLI_SESSION_STARTED";
|
|
3
4
|
function measureIsDefined(val) {
|
|
@@ -70,6 +71,16 @@ function eventCliSession(cliCommand, userConfig, flags) {
|
|
|
70
71
|
config: createAnonymousConfigInfo(userConfig),
|
|
71
72
|
flags: cliFlags
|
|
72
73
|
};
|
|
74
|
+
try {
|
|
75
|
+
const agentInfo = detectAgenticEnvironment();
|
|
76
|
+
if (agentInfo.isAgentic) {
|
|
77
|
+
payload.isAgentic = true;
|
|
78
|
+
if (agentInfo.id) payload.agentId = agentInfo.id;
|
|
79
|
+
if (agentInfo.name) payload.agentName = agentInfo.name;
|
|
80
|
+
if (agentInfo.type) payload.agentType = agentInfo.type;
|
|
81
|
+
}
|
|
82
|
+
} catch {
|
|
83
|
+
}
|
|
73
84
|
return [{ eventName: EVENT_SESSION, payload }];
|
|
74
85
|
}
|
|
75
86
|
export {
|
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
import type { SSRManifest } from '../core/app/types.js';
|
|
2
2
|
import type { MiddlewareHandler } from '../types/public/common.js';
|
|
3
|
+
/**
|
|
4
|
+
* Builds a `MiddlewareHandler` that post-processes the rendered response
|
|
5
|
+
* against the given i18n configuration. This is a thin wrapper around
|
|
6
|
+
* `core/i18n/handler.ts#I18n` that preserves the middleware-shaped API
|
|
7
|
+
* exposed to users via `astro:i18n.middleware(...)` for the manual
|
|
8
|
+
* routing strategy.
|
|
9
|
+
*
|
|
10
|
+
* Internal request handling no longer uses this — `AstroHandler.render`
|
|
11
|
+
* invokes `I18n.finalize` directly as an explicit post-processing step.
|
|
12
|
+
*/
|
|
3
13
|
export declare function createI18nMiddleware(i18n: SSRManifest['i18n'], base: SSRManifest['base'], trailingSlash: SSRManifest['trailingSlash'], format: SSRManifest['buildFormat']): MiddlewareHandler;
|
package/dist/i18n/middleware.js
CHANGED
|
@@ -1,95 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { REROUTE_DIRECTIVE_HEADER, ROUTE_TYPE_HEADER } from "../core/constants.js";
|
|
4
|
-
import { computeFallbackRoute } from "./fallback.js";
|
|
5
|
-
import { I18nRouter } from "./router.js";
|
|
1
|
+
import { getFetchStateFromAPIContext } from "../core/fetch/fetch-state.js";
|
|
2
|
+
import { I18n } from "../core/i18n/handler.js";
|
|
6
3
|
function createI18nMiddleware(i18n, base, trailingSlash, format) {
|
|
7
4
|
if (!i18n) return (_, next) => next();
|
|
8
|
-
const
|
|
9
|
-
strategy: i18n.strategy,
|
|
10
|
-
defaultLocale: i18n.defaultLocale,
|
|
11
|
-
locales: i18n.locales,
|
|
12
|
-
base,
|
|
13
|
-
domains: i18n.domainLookupTable ? Object.keys(i18n.domainLookupTable).reduce(
|
|
14
|
-
(acc, domain) => {
|
|
15
|
-
const locale = i18n.domainLookupTable[domain];
|
|
16
|
-
if (!acc[domain]) {
|
|
17
|
-
acc[domain] = [];
|
|
18
|
-
}
|
|
19
|
-
acc[domain].push(locale);
|
|
20
|
-
return acc;
|
|
21
|
-
},
|
|
22
|
-
{}
|
|
23
|
-
) : void 0
|
|
24
|
-
});
|
|
5
|
+
const handler = new I18n(i18n, base, trailingSlash, format);
|
|
25
6
|
return async (context, next) => {
|
|
26
7
|
const response = await next();
|
|
27
|
-
|
|
28
|
-
const isReroute = response.headers.get(REROUTE_DIRECTIVE_HEADER);
|
|
29
|
-
if (isReroute === "no" && typeof i18n.fallback === "undefined") {
|
|
30
|
-
return response;
|
|
31
|
-
}
|
|
32
|
-
if (typeHeader !== "page" && typeHeader !== "fallback") {
|
|
33
|
-
return response;
|
|
34
|
-
}
|
|
35
|
-
const routerContext = {
|
|
36
|
-
currentLocale: context.currentLocale,
|
|
37
|
-
currentDomain: context.url.hostname,
|
|
38
|
-
routeType: typeHeader,
|
|
39
|
-
isReroute: isReroute === "yes"
|
|
40
|
-
};
|
|
41
|
-
const routeDecision = i18nRouter.match(context.url.pathname, routerContext);
|
|
42
|
-
switch (routeDecision.type) {
|
|
43
|
-
case "redirect": {
|
|
44
|
-
let location = routeDecision.location;
|
|
45
|
-
if (shouldAppendForwardSlash(trailingSlash, format)) {
|
|
46
|
-
location = appendForwardSlash(location);
|
|
47
|
-
}
|
|
48
|
-
return context.redirect(location, routeDecision.status);
|
|
49
|
-
}
|
|
50
|
-
case "notFound": {
|
|
51
|
-
if (context.isPrerendered) {
|
|
52
|
-
const prerenderedRes = new Response(response.body, {
|
|
53
|
-
status: 404,
|
|
54
|
-
headers: response.headers
|
|
55
|
-
});
|
|
56
|
-
prerenderedRes.headers.set(REROUTE_DIRECTIVE_HEADER, "no");
|
|
57
|
-
if (routeDecision.location) {
|
|
58
|
-
prerenderedRes.headers.set("Location", routeDecision.location);
|
|
59
|
-
}
|
|
60
|
-
return prerenderedRes;
|
|
61
|
-
}
|
|
62
|
-
const headers = new Headers();
|
|
63
|
-
if (routeDecision.location) {
|
|
64
|
-
headers.set("Location", routeDecision.location);
|
|
65
|
-
}
|
|
66
|
-
return new Response(null, { status: 404, headers });
|
|
67
|
-
}
|
|
68
|
-
case "continue":
|
|
69
|
-
break;
|
|
70
|
-
}
|
|
71
|
-
if (i18n.fallback && i18n.fallbackType) {
|
|
72
|
-
const fallbackDecision = computeFallbackRoute({
|
|
73
|
-
pathname: context.url.pathname,
|
|
74
|
-
responseStatus: response.status,
|
|
75
|
-
currentLocale: context.currentLocale,
|
|
76
|
-
fallback: i18n.fallback,
|
|
77
|
-
fallbackType: i18n.fallbackType,
|
|
78
|
-
locales: i18n.locales,
|
|
79
|
-
defaultLocale: i18n.defaultLocale,
|
|
80
|
-
strategy: i18n.strategy,
|
|
81
|
-
base
|
|
82
|
-
});
|
|
83
|
-
switch (fallbackDecision.type) {
|
|
84
|
-
case "redirect":
|
|
85
|
-
return context.redirect(fallbackDecision.pathname + context.url.search);
|
|
86
|
-
case "rewrite":
|
|
87
|
-
return await context.rewrite(fallbackDecision.pathname + context.url.search);
|
|
88
|
-
case "none":
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return response;
|
|
8
|
+
return handler.finalize(getFetchStateFromAPIContext(context), response);
|
|
93
9
|
};
|
|
94
10
|
}
|
|
95
11
|
export {
|
package/dist/i18n/utils.js
CHANGED
|
@@ -55,7 +55,7 @@ function computePreferredLocale(request, locales) {
|
|
|
55
55
|
const browserLocaleList = sortAndFilterLocales(parseLocale(acceptHeader), locales);
|
|
56
56
|
const firstResult = browserLocaleList.at(0);
|
|
57
57
|
if (firstResult && firstResult.locale !== "*") {
|
|
58
|
-
for (const currentLocale of locales) {
|
|
58
|
+
outer: for (const currentLocale of locales) {
|
|
59
59
|
if (typeof currentLocale === "string") {
|
|
60
60
|
if (normalizeTheLocale(currentLocale) === normalizeTheLocale(firstResult.locale)) {
|
|
61
61
|
result = currentLocale;
|
|
@@ -65,7 +65,7 @@ function computePreferredLocale(request, locales) {
|
|
|
65
65
|
for (const currentCode of currentLocale.codes) {
|
|
66
66
|
if (normalizeTheLocale(currentCode) === normalizeTheLocale(firstResult.locale)) {
|
|
67
67
|
result = currentCode;
|
|
68
|
-
break;
|
|
68
|
+
break outer;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
}
|
package/dist/jsx/rehype.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RehypePlugin } from '@astrojs/markdown
|
|
1
|
+
import type { RehypePlugin } from '@astrojs/internal-helpers/markdown';
|
|
2
2
|
import type { VFile } from 'vfile';
|
|
3
3
|
import type { PluginMetadata } from '../vite-plugin-astro/types.js';
|
|
4
4
|
export declare const rehypeAnalyzeAstroMetadata: RehypePlugin;
|
|
@@ -17,7 +17,8 @@ function virtualModulePlugin({ settings }) {
|
|
|
17
17
|
defaultLocale: ${JSON.stringify(config.i18n.defaultLocale)},
|
|
18
18
|
locales: ${JSON.stringify(config.i18n.locales)},
|
|
19
19
|
routing: ${JSON.stringify(routing)},
|
|
20
|
-
fallback: ${JSON.stringify(config.i18n.fallback)}
|
|
20
|
+
fallback: ${JSON.stringify(config.i18n.fallback)},
|
|
21
|
+
domains: ${JSON.stringify(config.i18n.domains)}
|
|
21
22
|
};`;
|
|
22
23
|
}
|
|
23
24
|
let imageCode = "const image = undefined;";
|
|
@@ -100,6 +101,7 @@ const build = {
|
|
|
100
101
|
server: new URL(manifest.buildServerDir),
|
|
101
102
|
client: new URL(manifest.buildClientDir),
|
|
102
103
|
format: manifest.buildFormat,
|
|
104
|
+
assetsPrefix: manifest.assetsPrefix,
|
|
103
105
|
};
|
|
104
106
|
|
|
105
107
|
const cacheDir = new URL(manifest.cacheDir);
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { extractFrontmatter, isFrontmatterValid, parseFrontmatter, type ParseFrontmatterOptions, type ParseFrontmatterResult, } from '@astrojs/internal-helpers/frontmatter';
|
|
2
|
+
export { resolvePath } from '../core/viteUtils.js';
|
|
3
|
+
export { createDefaultAstroMetadata } from '../vite-plugin-astro/metadata.js';
|
|
4
|
+
export type { AstroMarkdownOptions, AstroMetadata, MarkdownProcessor, MarkdownRenderer, MarkdownRenderOptions, MarkdownRenderResult, MdxRenderer, MdxRendererOptions, MdxRenderResult, } from '@astrojs/internal-helpers/markdown';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
extractFrontmatter,
|
|
3
|
+
isFrontmatterValid,
|
|
4
|
+
parseFrontmatter
|
|
5
|
+
} from "@astrojs/internal-helpers/frontmatter";
|
|
6
|
+
import { resolvePath } from "../core/viteUtils.js";
|
|
7
|
+
import { createDefaultAstroMetadata } from "../vite-plugin-astro/metadata.js";
|
|
8
|
+
export {
|
|
9
|
+
createDefaultAstroMetadata,
|
|
10
|
+
extractFrontmatter,
|
|
11
|
+
isFrontmatterValid,
|
|
12
|
+
parseFrontmatter,
|
|
13
|
+
resolvePath
|
|
14
|
+
};
|
package/dist/prefetch/index.js
CHANGED
|
@@ -24,8 +24,9 @@ function initTapStrategy() {
|
|
|
24
24
|
document.addEventListener(
|
|
25
25
|
event,
|
|
26
26
|
(e) => {
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
const anchor = e.target.closest("a");
|
|
28
|
+
if (elMatchesStrategy(anchor, "tap")) {
|
|
29
|
+
prefetch(anchor.href, { ignoreSlowConnection: true });
|
|
29
30
|
}
|
|
30
31
|
},
|
|
31
32
|
{ passive: true }
|
|
@@ -37,8 +38,9 @@ function initHoverStrategy() {
|
|
|
37
38
|
document.body.addEventListener(
|
|
38
39
|
"focusin",
|
|
39
40
|
(e) => {
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
const anchor = e.target.closest("a");
|
|
42
|
+
if (elMatchesStrategy(anchor, "hover")) {
|
|
43
|
+
handleHoverIn(anchor.href);
|
|
42
44
|
}
|
|
43
45
|
},
|
|
44
46
|
{ passive: true }
|
|
@@ -49,13 +51,16 @@ function initHoverStrategy() {
|
|
|
49
51
|
if (listenedAnchors.has(anchor)) continue;
|
|
50
52
|
if (elMatchesStrategy(anchor, "hover")) {
|
|
51
53
|
listenedAnchors.add(anchor);
|
|
52
|
-
anchor.addEventListener(
|
|
54
|
+
anchor.addEventListener(
|
|
55
|
+
"mouseenter",
|
|
56
|
+
(e) => handleHoverIn(e.currentTarget.href),
|
|
57
|
+
{ passive: true }
|
|
58
|
+
);
|
|
53
59
|
anchor.addEventListener("mouseleave", handleHoverOut, { passive: true });
|
|
54
60
|
}
|
|
55
61
|
}
|
|
56
62
|
});
|
|
57
|
-
function handleHoverIn(
|
|
58
|
-
const href = e.target.href;
|
|
63
|
+
function handleHoverIn(href) {
|
|
59
64
|
if (timeout) {
|
|
60
65
|
clearTimeout(timeout);
|
|
61
66
|
}
|
package/dist/prerender/utils.js
CHANGED
|
@@ -3,7 +3,11 @@ function getPrerenderDefault(config) {
|
|
|
3
3
|
return config.output !== "server";
|
|
4
4
|
}
|
|
5
5
|
function getServerOutputDirectory(settings) {
|
|
6
|
-
|
|
6
|
+
const preserveStructure = settings.adapter?.adapterFeatures?.preserveBuildServerDir;
|
|
7
|
+
if (settings.buildOutput === "server" || preserveStructure) {
|
|
8
|
+
return settings.config.build.server;
|
|
9
|
+
}
|
|
10
|
+
return getOutDirWithinCwd(settings.config.outDir);
|
|
7
11
|
}
|
|
8
12
|
function getPrerenderOutputDirectory(settings) {
|
|
9
13
|
return new URL("./.prerender/", getServerOutputDirectory(settings));
|
|
@@ -25,6 +25,14 @@
|
|
|
25
25
|
import { aria, roles } from "aria-query";
|
|
26
26
|
import { AXObjectRoles, elementAXObjects } from "axobject-query";
|
|
27
27
|
const WHITESPACE_REGEX = /\s+/;
|
|
28
|
+
function isHiddenByClosedDetails(element) {
|
|
29
|
+
for (let parent = element.parentElement; parent; parent = parent.parentElement) {
|
|
30
|
+
if (parent.localName !== "details" || parent.open) continue;
|
|
31
|
+
const summary = Array.from(parent.children).find((child) => child.localName === "summary");
|
|
32
|
+
if (!summary?.contains(element)) return true;
|
|
33
|
+
}
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
28
36
|
const a11y_required_attributes = {
|
|
29
37
|
a: ["href"],
|
|
30
38
|
area: ["alt", "aria-label", "aria-labelledby"],
|
|
@@ -321,6 +329,7 @@ const a11y = [
|
|
|
321
329
|
message: "Headings and anchors must have an accessible name, which can come from: inner text, aria-label, aria-labelledby, an img with alt property, or an svg with a tag <title></title>.",
|
|
322
330
|
selector: a11y_required_content.join(","),
|
|
323
331
|
match(element) {
|
|
332
|
+
if (isHiddenByClosedDetails(element)) return false;
|
|
324
333
|
const innerText = element.innerText?.trim();
|
|
325
334
|
if (innerText && innerText !== "") return false;
|
|
326
335
|
const ariaLabel = element.getAttribute("aria-label")?.trim();
|
|
@@ -59,6 +59,37 @@ const FORBIDDEN_COMPONENT_EXPORT_KEYS = /* @__PURE__ */ new Set(["__proto__", "c
|
|
|
59
59
|
}
|
|
60
60
|
this.start();
|
|
61
61
|
}
|
|
62
|
+
getRetryImportUrl(url) {
|
|
63
|
+
const parsed = new URL(url, document.baseURI);
|
|
64
|
+
const retryToken = `astro-retry=${Date.now()}`;
|
|
65
|
+
const currentHash = parsed.hash.replace(/^#/, "");
|
|
66
|
+
parsed.hash = currentHash ? `${currentHash}&${retryToken}` : retryToken;
|
|
67
|
+
return parsed.toString();
|
|
68
|
+
}
|
|
69
|
+
async importWithRetry(url) {
|
|
70
|
+
try {
|
|
71
|
+
return await import(url);
|
|
72
|
+
} catch {
|
|
73
|
+
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
74
|
+
return import(this.getRetryImportUrl(url));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
handleHydrationError(error) {
|
|
78
|
+
const componentUrl = this.getAttribute("component-url");
|
|
79
|
+
const event = new CustomEvent("astro:hydration-error", {
|
|
80
|
+
cancelable: true,
|
|
81
|
+
bubbles: true,
|
|
82
|
+
composed: true,
|
|
83
|
+
detail: {
|
|
84
|
+
error,
|
|
85
|
+
componentUrl
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
const shouldLogError = this.dispatchEvent(event);
|
|
89
|
+
if (shouldLogError) {
|
|
90
|
+
console.error(`[astro-island] Error hydrating ${componentUrl}`, error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
62
93
|
async start() {
|
|
63
94
|
const opts = JSON.parse(this.getAttribute("opts"));
|
|
64
95
|
const directive = this.getAttribute("client");
|
|
@@ -70,34 +101,40 @@ const FORBIDDEN_COMPONENT_EXPORT_KEYS = /* @__PURE__ */ new Set(["__proto__", "c
|
|
|
70
101
|
await Astro[directive](
|
|
71
102
|
async () => {
|
|
72
103
|
const rendererUrl = this.getAttribute("renderer-url");
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
if (
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
this.Component = componentModule[componentExport];
|
|
84
|
-
} else {
|
|
85
|
-
this.Component = componentModule;
|
|
86
|
-
for (const part of componentExport.split(".")) {
|
|
87
|
-
if (FORBIDDEN_COMPONENT_EXPORT_KEYS.has(part) || !this.Component || typeof this.Component !== "object" && typeof this.Component !== "function" || !Object.hasOwn(this.Component, part)) {
|
|
104
|
+
try {
|
|
105
|
+
const [componentModule, { default: hydrator }] = await Promise.all([
|
|
106
|
+
this.importWithRetry(this.getAttribute("component-url")),
|
|
107
|
+
rendererUrl ? this.importWithRetry(rendererUrl) : Promise.resolve({ default: () => () => {
|
|
108
|
+
} })
|
|
109
|
+
]);
|
|
110
|
+
const componentExport = this.getAttribute("component-export") || "default";
|
|
111
|
+
if (!componentExport.includes(".")) {
|
|
112
|
+
if (FORBIDDEN_COMPONENT_EXPORT_KEYS.has(componentExport)) {
|
|
88
113
|
throw new Error(`Invalid component export path: ${componentExport}`);
|
|
89
114
|
}
|
|
90
|
-
this.Component =
|
|
115
|
+
this.Component = componentModule[componentExport];
|
|
116
|
+
} else {
|
|
117
|
+
this.Component = componentModule;
|
|
118
|
+
for (const part of componentExport.split(".")) {
|
|
119
|
+
if (FORBIDDEN_COMPONENT_EXPORT_KEYS.has(part) || !this.Component || typeof this.Component !== "object" && typeof this.Component !== "function" || !Object.hasOwn(this.Component, part)) {
|
|
120
|
+
throw new Error(`Invalid component export path: ${componentExport}`);
|
|
121
|
+
}
|
|
122
|
+
this.Component = this.Component[part];
|
|
123
|
+
}
|
|
91
124
|
}
|
|
125
|
+
this.hydrator = hydrator;
|
|
126
|
+
return this.hydrate;
|
|
127
|
+
} catch (error) {
|
|
128
|
+
this.handleHydrationError(error);
|
|
129
|
+
return () => {
|
|
130
|
+
};
|
|
92
131
|
}
|
|
93
|
-
this.hydrator = hydrator;
|
|
94
|
-
return this.hydrate;
|
|
95
132
|
},
|
|
96
133
|
opts,
|
|
97
134
|
this
|
|
98
135
|
);
|
|
99
|
-
} catch (
|
|
100
|
-
|
|
136
|
+
} catch (error) {
|
|
137
|
+
this.handleHydrationError(error);
|
|
101
138
|
}
|
|
102
139
|
}
|
|
103
140
|
hydrate = async () => {
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Do not edit this directly, but instead edit that file and rerun the prebuild
|
|
4
4
|
* to generate this file.
|
|
5
5
|
*/
|
|
6
|
-
declare const _default: "(()=>{var
|
|
6
|
+
declare const _default: "(()=>{var g=Object.defineProperty;var w=(d,s,h)=>s in d?g(d,s,{enumerable:!0,configurable:!0,writable:!0,value:h}):d[s]=h;var l=(d,s,h)=>w(d,typeof s!=\"symbol\"?s+\"\":s,h);var E=new Set([\"__proto__\",\"constructor\",\"prototype\"]);{let d={0:t=>y(t),1:t=>h(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(h(t)),5:t=>new Set(h(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>Number.POSITIVE_INFINITY*t},s=t=>{let[p,e]=t;return p in d?d[p](e):void 0},h=t=>t.map(s),y=t=>typeof t!=\"object\"||t===null?t:Object.fromEntries(Object.entries(t).map(([p,e])=>[p,s(e)]));class f extends HTMLElement{constructor(){super(...arguments);l(this,\"Component\");l(this,\"hydrator\");l(this,\"hydrate\",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest(\"astro-island[ssr]\");if(e){e.addEventListener(\"astro:hydrate\",this.hydrate,{once:!0});return}let n=this.querySelectorAll(\"astro-slot\"),r={},i=this.querySelectorAll(\"template[data-astro-template]\");for(let o of i){let c=o.closest(this.tagName);c!=null&&c.isSameNode(this)&&(r[o.getAttribute(\"data-astro-template\")||\"default\"]=o.innerHTML,o.remove())}for(let o of n){let c=o.closest(this.tagName);c!=null&&c.isSameNode(this)&&(r[o.getAttribute(\"name\")||\"default\"]=o.innerHTML)}let m;try{m=this.hasAttribute(\"props\")?y(JSON.parse(this.getAttribute(\"props\"))):{}}catch(o){let c=this.getAttribute(\"component-url\")||\"<unknown>\",v=this.getAttribute(\"component-export\");throw v&&(c+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${c}`,this.getAttribute(\"props\"),o),o}let a,u=this.hydrator(this);a=performance.now(),await u(this.Component,m,r,{client:this.getAttribute(\"client\")}),a&&this.setAttribute(\"client-render-time\",(performance.now()-a).toString()),this.removeAttribute(\"ssr\"),this.dispatchEvent(new CustomEvent(\"astro:hydrate\"))});l(this,\"unmount\",()=>{this.isConnected||this.dispatchEvent(new CustomEvent(\"astro:unmount\"))})}disconnectedCallback(){document.removeEventListener(\"astro:after-swap\",this.unmount),document.addEventListener(\"astro:after-swap\",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute(\"await-children\")||document.readyState===\"interactive\"||document.readyState===\"complete\")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener(\"DOMContentLoaded\",e),n.disconnect(),this.childrenConnectedCallback()},n=new MutationObserver(()=>{var r;((r=this.lastChild)==null?void 0:r.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue===\"astro:end\"&&(this.lastChild.remove(),e())});n.observe(this,{childList:!0}),document.addEventListener(\"DOMContentLoaded\",e)}}async childrenConnectedCallback(){let e=this.getAttribute(\"before-hydration-url\");e&&await import(e),this.start()}getRetryImportUrl(e){let n=new URL(e,document.baseURI),r=`astro-retry=${Date.now()}`,i=n.hash.replace(/^#/,\"\");return n.hash=i?`${i}&${r}`:r,n.toString()}async importWithRetry(e){try{return await import(e)}catch(n){return await new Promise(r=>setTimeout(r,1e3)),import(this.getRetryImportUrl(e))}}handleHydrationError(e){let n=this.getAttribute(\"component-url\"),r=new CustomEvent(\"astro:hydration-error\",{cancelable:!0,bubbles:!0,composed:!0,detail:{error:e,componentUrl:n}});this.dispatchEvent(r)&&console.error(`[astro-island] Error hydrating ${n}`,e)}async start(){let e=JSON.parse(this.getAttribute(\"opts\")),n=this.getAttribute(\"client\");if(Astro[n]===void 0){window.addEventListener(`astro:${n}`,()=>this.start(),{once:!0});return}try{await Astro[n](async()=>{let r=this.getAttribute(\"renderer-url\");try{let[i,{default:m}]=await Promise.all([this.importWithRetry(this.getAttribute(\"component-url\")),r?this.importWithRetry(r):Promise.resolve({default:()=>()=>{}})]),a=this.getAttribute(\"component-export\")||\"default\";if(a.includes(\".\")){this.Component=i;for(let u of a.split(\".\")){if(E.has(u)||!this.Component||typeof this.Component!=\"object\"&&typeof this.Component!=\"function\"||!Object.hasOwn(this.Component,u))throw new Error(`Invalid component export path: ${a}`);this.Component=this.Component[u]}}else{if(E.has(a))throw new Error(`Invalid component export path: ${a}`);this.Component=i[a]}return this.hydrator=m,this.hydrate}catch(i){return this.handleHydrationError(i),()=>{}}},e,this)}catch(r){this.handleHydrationError(r)}}attributeChangedCallback(){this.hydrate()}}l(f,\"observedAttributes\",[\"props\"]),customElements.get(\"astro-island\")||customElements.define(\"astro-island\",f)}})();";
|
|
7
7
|
export default _default;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var astro_island_prebuilt_dev_default = `(()=>{var
|
|
1
|
+
var astro_island_prebuilt_dev_default = `(()=>{var g=Object.defineProperty;var w=(d,s,h)=>s in d?g(d,s,{enumerable:!0,configurable:!0,writable:!0,value:h}):d[s]=h;var l=(d,s,h)=>w(d,typeof s!="symbol"?s+"":s,h);var E=new Set(["__proto__","constructor","prototype"]);{let d={0:t=>y(t),1:t=>h(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(h(t)),5:t=>new Set(h(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>Number.POSITIVE_INFINITY*t},s=t=>{let[p,e]=t;return p in d?d[p](e):void 0},h=t=>t.map(s),y=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([p,e])=>[p,s(e)]));class f extends HTMLElement{constructor(){super(...arguments);l(this,"Component");l(this,"hydrator");l(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let n=this.querySelectorAll("astro-slot"),r={},i=this.querySelectorAll("template[data-astro-template]");for(let o of i){let c=o.closest(this.tagName);c!=null&&c.isSameNode(this)&&(r[o.getAttribute("data-astro-template")||"default"]=o.innerHTML,o.remove())}for(let o of n){let c=o.closest(this.tagName);c!=null&&c.isSameNode(this)&&(r[o.getAttribute("name")||"default"]=o.innerHTML)}let m;try{m=this.hasAttribute("props")?y(JSON.parse(this.getAttribute("props"))):{}}catch(o){let c=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(c+=\` (export \${v})\`),console.error(\`[hydrate] Error parsing props for component \${c}\`,this.getAttribute("props"),o),o}let a,u=this.hydrator(this);a=performance.now(),await u(this.Component,m,r,{client:this.getAttribute("client")}),a&&this.setAttribute("client-render-time",(performance.now()-a).toString()),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});l(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),n.disconnect(),this.childrenConnectedCallback()},n=new MutationObserver(()=>{var r;((r=this.lastChild)==null?void 0:r.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});n.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}getRetryImportUrl(e){let n=new URL(e,document.baseURI),r=\`astro-retry=\${Date.now()}\`,i=n.hash.replace(/^#/,"");return n.hash=i?\`\${i}&\${r}\`:r,n.toString()}async importWithRetry(e){try{return await import(e)}catch(n){return await new Promise(r=>setTimeout(r,1e3)),import(this.getRetryImportUrl(e))}}handleHydrationError(e){let n=this.getAttribute("component-url"),r=new CustomEvent("astro:hydration-error",{cancelable:!0,bubbles:!0,composed:!0,detail:{error:e,componentUrl:n}});this.dispatchEvent(r)&&console.error(\`[astro-island] Error hydrating \${n}\`,e)}async start(){let e=JSON.parse(this.getAttribute("opts")),n=this.getAttribute("client");if(Astro[n]===void 0){window.addEventListener(\`astro:\${n}\`,()=>this.start(),{once:!0});return}try{await Astro[n](async()=>{let r=this.getAttribute("renderer-url");try{let[i,{default:m}]=await Promise.all([this.importWithRetry(this.getAttribute("component-url")),r?this.importWithRetry(r):Promise.resolve({default:()=>()=>{}})]),a=this.getAttribute("component-export")||"default";if(a.includes(".")){this.Component=i;for(let u of a.split(".")){if(E.has(u)||!this.Component||typeof this.Component!="object"&&typeof this.Component!="function"||!Object.hasOwn(this.Component,u))throw new Error(\`Invalid component export path: \${a}\`);this.Component=this.Component[u]}}else{if(E.has(a))throw new Error(\`Invalid component export path: \${a}\`);this.Component=i[a]}return this.hydrator=m,this.hydrate}catch(i){return this.handleHydrationError(i),()=>{}}},e,this)}catch(r){this.handleHydrationError(r)}}attributeChangedCallback(){this.hydrate()}}l(f,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",f)}})();`;
|
|
2
2
|
export {
|
|
3
3
|
astro_island_prebuilt_dev_default as default
|
|
4
4
|
};
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Do not edit this directly, but instead edit that file and rerun the prebuild
|
|
4
4
|
* to generate this file.
|
|
5
5
|
*/
|
|
6
|
-
declare const _default: "(()=>{var
|
|
6
|
+
declare const _default: "(()=>{var g=Object.defineProperty;var w=(c,s,d)=>s in c?g(c,s,{enumerable:!0,configurable:!0,writable:!0,value:d}):c[s]=d;var l=(c,s,d)=>w(c,typeof s!=\"symbol\"?s+\"\":s,d);var E=new Set([\"__proto__\",\"constructor\",\"prototype\"]);{let c={0:t=>y(t),1:t=>d(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(d(t)),5:t=>new Set(d(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>Number.POSITIVE_INFINITY*t},s=t=>{let[p,e]=t;return p in c?c[p](e):void 0},d=t=>t.map(s),y=t=>typeof t!=\"object\"||t===null?t:Object.fromEntries(Object.entries(t).map(([p,e])=>[p,s(e)]));class f extends HTMLElement{constructor(){super(...arguments);l(this,\"Component\");l(this,\"hydrator\");l(this,\"hydrate\",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest(\"astro-island[ssr]\");if(e){e.addEventListener(\"astro:hydrate\",this.hydrate,{once:!0});return}let n=this.querySelectorAll(\"astro-slot\"),r={},i=this.querySelectorAll(\"template[data-astro-template]\");for(let o of i){let a=o.closest(this.tagName);a!=null&&a.isSameNode(this)&&(r[o.getAttribute(\"data-astro-template\")||\"default\"]=o.innerHTML,o.remove())}for(let o of n){let a=o.closest(this.tagName);a!=null&&a.isSameNode(this)&&(r[o.getAttribute(\"name\")||\"default\"]=o.innerHTML)}let u;try{u=this.hasAttribute(\"props\")?y(JSON.parse(this.getAttribute(\"props\"))):{}}catch(o){let a=this.getAttribute(\"component-url\")||\"<unknown>\",v=this.getAttribute(\"component-export\");throw v&&(a+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${a}`,this.getAttribute(\"props\"),o),o}let h;await this.hydrator(this)(this.Component,u,r,{client:this.getAttribute(\"client\")}),this.removeAttribute(\"ssr\"),this.dispatchEvent(new CustomEvent(\"astro:hydrate\"))});l(this,\"unmount\",()=>{this.isConnected||this.dispatchEvent(new CustomEvent(\"astro:unmount\"))})}disconnectedCallback(){document.removeEventListener(\"astro:after-swap\",this.unmount),document.addEventListener(\"astro:after-swap\",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute(\"await-children\")||document.readyState===\"interactive\"||document.readyState===\"complete\")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener(\"DOMContentLoaded\",e),n.disconnect(),this.childrenConnectedCallback()},n=new MutationObserver(()=>{var r;((r=this.lastChild)==null?void 0:r.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue===\"astro:end\"&&(this.lastChild.remove(),e())});n.observe(this,{childList:!0}),document.addEventListener(\"DOMContentLoaded\",e)}}async childrenConnectedCallback(){let e=this.getAttribute(\"before-hydration-url\");e&&await import(e),this.start()}getRetryImportUrl(e){let n=new URL(e,document.baseURI),r=`astro-retry=${Date.now()}`,i=n.hash.replace(/^#/,\"\");return n.hash=i?`${i}&${r}`:r,n.toString()}async importWithRetry(e){try{return await import(e)}catch(n){return await new Promise(r=>setTimeout(r,1e3)),import(this.getRetryImportUrl(e))}}handleHydrationError(e){let n=this.getAttribute(\"component-url\"),r=new CustomEvent(\"astro:hydration-error\",{cancelable:!0,bubbles:!0,composed:!0,detail:{error:e,componentUrl:n}});this.dispatchEvent(r)&&console.error(`[astro-island] Error hydrating ${n}`,e)}async start(){let e=JSON.parse(this.getAttribute(\"opts\")),n=this.getAttribute(\"client\");if(Astro[n]===void 0){window.addEventListener(`astro:${n}`,()=>this.start(),{once:!0});return}try{await Astro[n](async()=>{let r=this.getAttribute(\"renderer-url\");try{let[i,{default:u}]=await Promise.all([this.importWithRetry(this.getAttribute(\"component-url\")),r?this.importWithRetry(r):Promise.resolve({default:()=>()=>{}})]),h=this.getAttribute(\"component-export\")||\"default\";if(h.includes(\".\")){this.Component=i;for(let m of h.split(\".\")){if(E.has(m)||!this.Component||typeof this.Component!=\"object\"&&typeof this.Component!=\"function\"||!Object.hasOwn(this.Component,m))throw new Error(`Invalid component export path: ${h}`);this.Component=this.Component[m]}}else{if(E.has(h))throw new Error(`Invalid component export path: ${h}`);this.Component=i[h]}return this.hydrator=u,this.hydrate}catch(i){return this.handleHydrationError(i),()=>{}}},e,this)}catch(r){this.handleHydrationError(r)}}attributeChangedCallback(){this.hydrate()}}l(f,\"observedAttributes\",[\"props\"]),customElements.get(\"astro-island\")||customElements.define(\"astro-island\",f)}})();";
|
|
7
7
|
export default _default;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var astro_island_prebuilt_default = `(()=>{var
|
|
1
|
+
var astro_island_prebuilt_default = `(()=>{var g=Object.defineProperty;var w=(c,s,d)=>s in c?g(c,s,{enumerable:!0,configurable:!0,writable:!0,value:d}):c[s]=d;var l=(c,s,d)=>w(c,typeof s!="symbol"?s+"":s,d);var E=new Set(["__proto__","constructor","prototype"]);{let c={0:t=>y(t),1:t=>d(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(d(t)),5:t=>new Set(d(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>Number.POSITIVE_INFINITY*t},s=t=>{let[p,e]=t;return p in c?c[p](e):void 0},d=t=>t.map(s),y=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([p,e])=>[p,s(e)]));class f extends HTMLElement{constructor(){super(...arguments);l(this,"Component");l(this,"hydrator");l(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let n=this.querySelectorAll("astro-slot"),r={},i=this.querySelectorAll("template[data-astro-template]");for(let o of i){let a=o.closest(this.tagName);a!=null&&a.isSameNode(this)&&(r[o.getAttribute("data-astro-template")||"default"]=o.innerHTML,o.remove())}for(let o of n){let a=o.closest(this.tagName);a!=null&&a.isSameNode(this)&&(r[o.getAttribute("name")||"default"]=o.innerHTML)}let u;try{u=this.hasAttribute("props")?y(JSON.parse(this.getAttribute("props"))):{}}catch(o){let a=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(a+=\` (export \${v})\`),console.error(\`[hydrate] Error parsing props for component \${a}\`,this.getAttribute("props"),o),o}let h;await this.hydrator(this)(this.Component,u,r,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});l(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),n.disconnect(),this.childrenConnectedCallback()},n=new MutationObserver(()=>{var r;((r=this.lastChild)==null?void 0:r.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});n.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}getRetryImportUrl(e){let n=new URL(e,document.baseURI),r=\`astro-retry=\${Date.now()}\`,i=n.hash.replace(/^#/,"");return n.hash=i?\`\${i}&\${r}\`:r,n.toString()}async importWithRetry(e){try{return await import(e)}catch(n){return await new Promise(r=>setTimeout(r,1e3)),import(this.getRetryImportUrl(e))}}handleHydrationError(e){let n=this.getAttribute("component-url"),r=new CustomEvent("astro:hydration-error",{cancelable:!0,bubbles:!0,composed:!0,detail:{error:e,componentUrl:n}});this.dispatchEvent(r)&&console.error(\`[astro-island] Error hydrating \${n}\`,e)}async start(){let e=JSON.parse(this.getAttribute("opts")),n=this.getAttribute("client");if(Astro[n]===void 0){window.addEventListener(\`astro:\${n}\`,()=>this.start(),{once:!0});return}try{await Astro[n](async()=>{let r=this.getAttribute("renderer-url");try{let[i,{default:u}]=await Promise.all([this.importWithRetry(this.getAttribute("component-url")),r?this.importWithRetry(r):Promise.resolve({default:()=>()=>{}})]),h=this.getAttribute("component-export")||"default";if(h.includes(".")){this.Component=i;for(let m of h.split(".")){if(E.has(m)||!this.Component||typeof this.Component!="object"&&typeof this.Component!="function"||!Object.hasOwn(this.Component,m))throw new Error(\`Invalid component export path: \${h}\`);this.Component=this.Component[m]}}else{if(E.has(h))throw new Error(\`Invalid component export path: \${h}\`);this.Component=i[h]}return this.hydrator=u,this.hydrate}catch(i){return this.handleHydrationError(i),()=>{}}},e,this)}catch(r){this.handleHydrationError(r)}}attributeChangedCallback(){this.hydrate()}}l(f,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",f)}})();`;
|
|
2
2
|
export {
|
|
3
3
|
astro_island_prebuilt_default as default
|
|
4
4
|
};
|
|
@@ -75,7 +75,7 @@ Did you forget to import the component or is it possible there is a typo?`);
|
|
|
75
75
|
}
|
|
76
76
|
case (!vnode.type && vnode.type !== 0):
|
|
77
77
|
return "";
|
|
78
|
-
case (typeof vnode.type === "string" && vnode.type !== ClientOnlyPlaceholder):
|
|
78
|
+
case (typeof vnode.type === "string" && vnode.type !== ClientOnlyPlaceholder && !vnode.type.includes("-")):
|
|
79
79
|
return markHTMLString(await renderElement(result, vnode.type, vnode.props ?? {}));
|
|
80
80
|
}
|
|
81
81
|
if (vnode.type) {
|
|
@@ -19,13 +19,13 @@ function stringifyChunk(result, chunk) {
|
|
|
19
19
|
switch (instruction.type) {
|
|
20
20
|
case "directive": {
|
|
21
21
|
const { hydration } = instruction;
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
const needsHydrationScript = hydration && determineIfNeedsHydrationScript(result);
|
|
23
|
+
const needsDirectiveScript = hydration && determinesIfNeedsDirectiveScript(result, hydration.directive);
|
|
24
24
|
if (needsHydrationScript) {
|
|
25
|
-
|
|
25
|
+
const prescripts = getPrescripts(result, "both", hydration.directive);
|
|
26
26
|
return markHTMLString(prescripts);
|
|
27
27
|
} else if (needsDirectiveScript) {
|
|
28
|
-
|
|
28
|
+
const prescripts = getPrescripts(result, "directive", hydration.directive);
|
|
29
29
|
return markHTMLString(prescripts);
|
|
30
30
|
} else {
|
|
31
31
|
return "";
|
|
@@ -46,6 +46,9 @@ function stringifyChunk(result, chunk) {
|
|
|
46
46
|
case "renderer-hydration-script": {
|
|
47
47
|
const { rendererSpecificHydrationScripts } = result._metadata;
|
|
48
48
|
const { rendererName } = instruction;
|
|
49
|
+
if (result._metadata.templateDepth > 0) {
|
|
50
|
+
return instruction.render();
|
|
51
|
+
}
|
|
49
52
|
if (!rendererSpecificHydrationScripts.has(rendererName)) {
|
|
50
53
|
rendererSpecificHydrationScripts.add(rendererName);
|
|
51
54
|
return instruction.render();
|
|
@@ -53,6 +56,9 @@ function stringifyChunk(result, chunk) {
|
|
|
53
56
|
return "";
|
|
54
57
|
}
|
|
55
58
|
case "server-island-runtime": {
|
|
59
|
+
if (result._metadata.templateDepth > 0) {
|
|
60
|
+
return renderServerIslandRuntime();
|
|
61
|
+
}
|
|
56
62
|
if (result._metadata.hasRenderedServerIslandRuntime) {
|
|
57
63
|
return "";
|
|
58
64
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { clsx } from "clsx";
|
|
2
2
|
import { AstroError, AstroErrorData } from "../../../core/errors/index.js";
|
|
3
|
-
import { markHTMLString } from "../escape.js";
|
|
3
|
+
import { escapeHTML, markHTMLString } from "../escape.js";
|
|
4
4
|
import { extractDirectives, generateHydrateScript } from "../hydration.js";
|
|
5
5
|
import { serializeProps } from "../serialize.js";
|
|
6
6
|
import { shorthash } from "../shorthash.js";
|
|
@@ -18,7 +18,8 @@ import { componentIsHTMLElement, renderHTMLElement } from "./dom.js";
|
|
|
18
18
|
import { maybeRenderHead } from "./head.js";
|
|
19
19
|
import { createRenderInstruction } from "./instruction.js";
|
|
20
20
|
import { containsServerDirective, ServerIslandComponent } from "./server-islands.js";
|
|
21
|
-
import {
|
|
21
|
+
import { renderChild } from "./any.js";
|
|
22
|
+
import { renderSlots, renderSlotToString } from "./slot.js";
|
|
22
23
|
import { formatList, internalSpreadAttributes, renderElement, voidElementNames } from "./util.js";
|
|
23
24
|
const needsHeadRenderingSymbol = /* @__PURE__ */ Symbol.for("astro.needsHeadRendering");
|
|
24
25
|
const rendererAliases = /* @__PURE__ */ new Map([["solid", "solid-js"]]);
|
|
@@ -287,7 +288,7 @@ ${serializeProps(
|
|
|
287
288
|
if (Object.keys(children).length > 0) {
|
|
288
289
|
for (const key of Object.keys(children)) {
|
|
289
290
|
let tagName = renderer?.ssr?.supportsAstroStaticSlot ? !!metadata.hydrate ? "astro-slot" : "astro-static-slot" : "astro-slot";
|
|
290
|
-
let expectedHTML = key === "default" ? `<${tagName}>` : `<${tagName} name="${key}">`;
|
|
291
|
+
let expectedHTML = key === "default" ? `<${tagName}>` : `<${tagName} name="${escapeHTML(key)}">`;
|
|
291
292
|
if (!html.includes(expectedHTML)) {
|
|
292
293
|
unrenderedSlots.push(key);
|
|
293
294
|
}
|
|
@@ -297,7 +298,7 @@ ${serializeProps(
|
|
|
297
298
|
unrenderedSlots = Object.keys(children);
|
|
298
299
|
}
|
|
299
300
|
const template = unrenderedSlots.length > 0 ? unrenderedSlots.map(
|
|
300
|
-
(key) => `<template data-astro-template${key !== "default" ? `="${key}"` : ""}>${children[key]}</template>`
|
|
301
|
+
(key) => `<template data-astro-template${key !== "default" ? `="${escapeHTML(key)}"` : ""}>${children[key]}</template>`
|
|
301
302
|
).join("") : "";
|
|
302
303
|
island.children = `${html ?? ""}${template}`;
|
|
303
304
|
if (island.children) {
|
|
@@ -333,10 +334,11 @@ function sanitizeElementName(tag) {
|
|
|
333
334
|
}
|
|
334
335
|
function renderFragmentComponent(result, slots = {}) {
|
|
335
336
|
const slot = slots?.default;
|
|
337
|
+
const preRendered = slot?.(result);
|
|
336
338
|
return {
|
|
337
339
|
render(destination) {
|
|
338
|
-
if (
|
|
339
|
-
return
|
|
340
|
+
if (preRendered == null) return;
|
|
341
|
+
return renderChild(destination, preRendered);
|
|
340
342
|
}
|
|
341
343
|
};
|
|
342
344
|
}
|
|
@@ -52,11 +52,7 @@ function renderAllHeadContent(result) {
|
|
|
52
52
|
(link) => renderElement("link", link, false)
|
|
53
53
|
);
|
|
54
54
|
content += styles.join("\n") + links.join("\n") + scripts.join("\n");
|
|
55
|
-
|
|
56
|
-
for (const part of result._metadata.extraHead) {
|
|
57
|
-
content += part;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
55
|
+
content += result._metadata.extraHead.join("");
|
|
60
56
|
return markHTMLString(content);
|
|
61
57
|
}
|
|
62
58
|
function renderHead() {
|