summaryrefslogtreecommitdiff
path: root/packages/astro/src/runtime/server/scripts.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/astro/src/runtime/server/scripts.ts')
-rw-r--r--packages/astro/src/runtime/server/scripts.ts29
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>`;