diff options
Diffstat (limited to 'packages/astro/src/runtime/server/scripts.ts')
-rw-r--r-- | packages/astro/src/runtime/server/scripts.ts | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/packages/astro/src/runtime/server/scripts.ts b/packages/astro/src/runtime/server/scripts.ts index 85efa795a..0446ed2c7 100644 --- a/packages/astro/src/runtime/server/scripts.ts +++ b/packages/astro/src/runtime/server/scripts.ts @@ -1,21 +1,11 @@ -import type { - APIContext, - AstroComponentMetadata, - AstroGlobalPartial, - EndpointHandler, - Params, - SSRElement, - SSRLoadedRenderer, - SSRResult, -} from '../../@types/astro'; +import type { SSRResult } from '../../@types/astro'; -import islandScript from './astro-island.prebuilt.js'; import idlePrebuilt from '../client/idle.prebuilt.js'; import loadPrebuilt from '../client/load.prebuilt.js'; +import mediaPrebuilt from '../client/media.prebuilt.js'; import onlyPrebuilt from '../client/only.prebuilt.js'; import visiblePrebuilt from '../client/visible.prebuilt.js'; -import mediaPrebuilt from '../client/media.prebuilt.js'; - +import islandScript from './astro-island.prebuilt.js'; // This is used to keep track of which requests (pages) have had the hydration script // appended. We only add the hydration script once per page, and since the SSRResult @@ -35,29 +25,27 @@ export const hydrationScripts: Record<string, string> = { load: loadPrebuilt, only: onlyPrebuilt, media: mediaPrebuilt, - visible: visiblePrebuilt + visible: visiblePrebuilt, }; const resultsWithDirectiveScript = new Map<string, WeakSet<SSRResult>>(); export function determinesIfNeedsDirectiveScript(result: SSRResult, directive: string): boolean { - if(!resultsWithDirectiveScript.has(directive)) { + if (!resultsWithDirectiveScript.has(directive)) { resultsWithDirectiveScript.set(directive, new WeakSet()); } const set = resultsWithDirectiveScript.get(directive)!; - if(set.has(result)) { + if (set.has(result)) { return false; } set.add(result); return true; } - - export type PrescriptType = null | 'both' | 'directive'; function getDirectiveScriptText(directive: string): string { - if(!(directive in hydrationScripts)) { + if (!(directive in hydrationScripts)) { throw new Error(`Unknown directive: ${directive}`); } const directiveScriptText = hydrationScripts[directive]; @@ -69,9 +57,8 @@ export function getPrescripts(type: PrescriptType, directive: string): string { // This is so that it executes immediate, and when the browser encounters // an astro-island element the callbacks will fire immediately, causing the JS // deps to be loaded immediately. - switch(type) { + switch (type) { case 'both': - return `<script>${getDirectiveScriptText(directive) + islandScript}</script>`; case 'directive': return `<script>${getDirectiveScriptText(directive)}</script>`; |