diff options
Diffstat (limited to '')
-rw-r--r-- | packages/integrations/svelte/src/server.ts (renamed from packages/integrations/svelte/server.js) | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/packages/integrations/svelte/server.js b/packages/integrations/svelte/src/server.ts index 6ebb62adc..4b0fccb3d 100644 --- a/packages/integrations/svelte/server.js +++ b/packages/integrations/svelte/src/server.ts @@ -1,8 +1,10 @@ +import type { AstroComponentMetadata } from 'astro'; import { createRawSnippet } from 'svelte'; import { render } from 'svelte/server'; import { incrementId } from './context.js'; +import type { RendererContext } from './types.js'; -function check(Component) { +function check(Component: any) { if (typeof Component !== 'function') return false; // Svelte 5 generated components always accept a `$$payload` prop. // This assumes that the SSR build does not minify it (which Astro enforces by default). @@ -11,21 +13,27 @@ function check(Component) { return Component.toString().includes('$$payload'); } -function needsHydration(metadata) { +function needsHydration(metadata: AstroComponentMetadata) { // Adjust how this is hydrated only when the version of Astro supports `astroStaticSlot` return metadata.astroStaticSlot ? !!metadata.hydrate : true; } -async function renderToStaticMarkup(Component, props, slotted, metadata) { +async function renderToStaticMarkup( + this: RendererContext, + Component: any, + props: Record<string, any>, + slotted: Record<string, any>, + metadata: AstroComponentMetadata, +) { const tagName = needsHydration(metadata) ? 'astro-slot' : 'astro-static-slot'; let children = undefined; - let $$slots = undefined; + let $$slots: Record<string, any> | undefined = undefined; let idPrefix; if (this && this.result) { idPrefix = incrementId(this.result); } - const renderProps = {}; + const renderProps: Record<string, any> = {}; for (const [key, value] of Object.entries(slotted)) { // Legacy slot support $$slots ??= {}; |