astro 6.1.10 → 6.2.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.
Files changed (128) hide show
  1. package/client.d.ts +1 -0
  2. package/dist/actions/runtime/types.d.ts +1 -1
  3. package/dist/assets/fonts/constants.d.ts +2 -0
  4. package/dist/assets/fonts/constants.js +4 -0
  5. package/dist/assets/fonts/core/create-get-font-file-url.d.ts +2 -0
  6. package/dist/assets/fonts/core/create-get-font-file-url.js +23 -0
  7. package/dist/assets/fonts/core/font-file-middleware.d.ts +21 -0
  8. package/dist/assets/fonts/core/font-file-middleware.js +59 -0
  9. package/dist/assets/fonts/definitions.d.ts +13 -0
  10. package/dist/assets/fonts/infra/build-url-resolver.d.ts +1 -0
  11. package/dist/assets/fonts/infra/build-url-resolver.js +7 -1
  12. package/dist/assets/fonts/infra/dev-url-resolver.d.ts +1 -0
  13. package/dist/assets/fonts/infra/dev-url-resolver.js +7 -1
  14. package/dist/assets/fonts/infra/remote-runtime-font-file-url-resolver.d.ts +19 -0
  15. package/dist/assets/fonts/infra/remote-runtime-font-file-url-resolver.js +27 -0
  16. package/dist/assets/fonts/infra/ssr-runtime-font-file-url-resolver.d.ts +12 -0
  17. package/dist/assets/fonts/infra/ssr-runtime-font-file-url-resolver.js +25 -0
  18. package/dist/assets/fonts/runtime.d.ts +1 -0
  19. package/dist/assets/fonts/runtime.js +4 -0
  20. package/dist/assets/fonts/vite-plugin-fonts.js +88 -49
  21. package/dist/assets/index.d.ts +1 -1
  22. package/dist/assets/index.js +3 -2
  23. package/dist/assets/svg/config.d.ts +5 -0
  24. package/dist/assets/svg/config.js +8 -0
  25. package/dist/assets/svg/svgo.d.ts +4 -0
  26. package/dist/assets/svg/svgo.js +10 -0
  27. package/dist/assets/svg/types.d.ts +4 -0
  28. package/dist/assets/svg/types.js +0 -0
  29. package/dist/assets/svg/utils.d.ts +3 -0
  30. package/dist/assets/{utils/svg.js → svg/utils.js} +11 -14
  31. package/dist/assets/vite-plugin-assets.js +8 -4
  32. package/dist/cli/flags.js +19 -9
  33. package/dist/cli/help/index.js +2 -1
  34. package/dist/cli/infra/build-time-astro-version-provider.js +1 -1
  35. package/dist/cli/preferences/index.js +3 -2
  36. package/dist/config/entrypoint.d.ts +2 -0
  37. package/dist/config/entrypoint.js +4 -0
  38. package/dist/config/index.js +9 -7
  39. package/dist/container/index.js +4 -7
  40. package/dist/content/content-layer.js +3 -3
  41. package/dist/core/app/base.d.ts +18 -4
  42. package/dist/core/app/base.js +29 -12
  43. package/dist/core/app/dev/app.d.ts +0 -1
  44. package/dist/core/app/dev/app.js +0 -2
  45. package/dist/core/app/entrypoints/index.d.ts +1 -1
  46. package/dist/core/app/entrypoints/index.js +1 -1
  47. package/dist/core/app/entrypoints/virtual/dev.js +1 -1
  48. package/dist/core/app/pipeline.js +2 -2
  49. package/dist/core/app/types.d.ts +10 -3
  50. package/dist/core/base-pipeline.d.ts +9 -2
  51. package/dist/core/base-pipeline.js +17 -0
  52. package/dist/core/build/app.js +2 -1
  53. package/dist/core/build/index.js +13 -2
  54. package/dist/core/build/internal.d.ts +1 -0
  55. package/dist/core/build/internal.js +1 -0
  56. package/dist/core/build/pipeline.js +1 -1
  57. package/dist/core/build/plugins/plugin-manifest.js +6 -1
  58. package/dist/core/cache/types.d.ts +2 -0
  59. package/dist/core/config/schemas/base.d.ts +16 -8
  60. package/dist/core/config/schemas/base.js +17 -10
  61. package/dist/core/config/schemas/relative.d.ts +31 -13
  62. package/dist/core/config/schemas/relative.js +3 -4
  63. package/dist/core/config/settings.js +2 -1
  64. package/dist/core/config/vite-load.js +4 -17
  65. package/dist/core/constants.js +1 -1
  66. package/dist/core/createMinimalViteDevServer.d.ts +8 -0
  67. package/dist/core/createMinimalViteDevServer.js +15 -0
  68. package/dist/core/dev/dev.js +1 -1
  69. package/dist/core/dev/restart.js +2 -2
  70. package/dist/core/errors/errors-data.d.ts +48 -2
  71. package/dist/core/errors/errors-data.js +26 -2
  72. package/dist/core/errors/zod-error-map.js +27 -0
  73. package/dist/core/logger/config.d.ts +6 -0
  74. package/dist/core/logger/config.js +0 -0
  75. package/dist/core/logger/core.d.ts +33 -13
  76. package/dist/core/logger/core.js +50 -5
  77. package/dist/core/logger/handlers.d.ts +60 -0
  78. package/dist/core/logger/handlers.js +81 -0
  79. package/dist/core/logger/impls/compose.d.ts +2 -0
  80. package/dist/core/logger/impls/compose.js +26 -0
  81. package/dist/core/logger/impls/console.d.ts +9 -0
  82. package/dist/core/logger/impls/console.js +38 -0
  83. package/dist/core/logger/impls/json.d.ts +15 -0
  84. package/dist/core/logger/impls/json.js +42 -0
  85. package/dist/core/logger/impls/node.d.ts +7 -0
  86. package/dist/core/logger/impls/node.js +40 -0
  87. package/dist/core/logger/load.d.ts +11 -0
  88. package/dist/core/logger/load.js +88 -0
  89. package/dist/core/logger/node.d.ts +0 -5
  90. package/dist/core/logger/node.js +1 -39
  91. package/dist/core/logger/public.d.ts +17 -0
  92. package/dist/core/logger/public.js +7 -0
  93. package/dist/core/messages/runtime.js +1 -1
  94. package/dist/core/middleware/index.js +2 -1
  95. package/dist/core/preview/index.js +4 -3
  96. package/dist/core/render-context.js +35 -1
  97. package/dist/core/sync/index.js +2 -2
  98. package/dist/core/wait-until.d.ts +1 -0
  99. package/dist/core/wait-until.js +0 -0
  100. package/dist/manifest/serialized.js +6 -1
  101. package/dist/runtime/compiler/index.d.ts +1 -1
  102. package/dist/runtime/compiler/index.js +4 -0
  103. package/dist/runtime/server/astro-global.js +3 -0
  104. package/dist/runtime/server/index.d.ts +1 -0
  105. package/dist/runtime/server/index.js +3 -0
  106. package/dist/runtime/server/render/common.js +16 -0
  107. package/dist/runtime/server/render/instruction.d.ts +7 -1
  108. package/dist/runtime/server/render/template-depth.d.ts +13 -0
  109. package/dist/runtime/server/render/template-depth.js +11 -0
  110. package/dist/types/astro.d.ts +2 -0
  111. package/dist/types/public/common.d.ts +1 -0
  112. package/dist/types/public/config.d.ts +54 -42
  113. package/dist/types/public/context.d.ts +17 -0
  114. package/dist/types/public/index.d.ts +1 -0
  115. package/dist/types/public/internal.d.ts +7 -1
  116. package/dist/types/public/preview.d.ts +5 -0
  117. package/dist/vite-plugin-app/app.d.ts +0 -1
  118. package/dist/vite-plugin-app/app.js +0 -2
  119. package/dist/vite-plugin-app/createAstroServerApp.d.ts +1 -1
  120. package/dist/vite-plugin-app/createAstroServerApp.js +2 -6
  121. package/dist/vite-plugin-load-fallback/index.d.ts +1 -1
  122. package/dist/vite-plugin-load-fallback/index.js +2 -5
  123. package/package.json +8 -3
  124. package/dist/assets/utils/svg.d.ts +0 -3
  125. package/dist/core/app/logging.d.ts +0 -3
  126. package/dist/core/app/logging.js +0 -11
  127. package/dist/core/logger/console.d.ts +0 -2
  128. package/dist/core/logger/console.js +0 -21
@@ -0,0 +1,11 @@
1
+ import { AstroLogger, type AstroLoggerLevel } from './core.js';
2
+ import type { LoggerHandlerConfig } from './config.js';
3
+ import type { AstroConfig, AstroInlineConfig } from '../../types/public/index.js';
4
+ export declare function loadLogger(config: LoggerHandlerConfig, level?: AstroLoggerLevel): Promise<AstroLogger>;
5
+ /**
6
+ * It attempts to load a logger from the entrypoint.
7
+ * If not provided, it creates a new logger instance on the fly.
8
+ * @param astroConfig
9
+ * @param inlineAstroConfig
10
+ */
11
+ export declare function loadOrCreateNodeLogger(astroConfig: AstroConfig, inlineAstroConfig: AstroInlineConfig): Promise<AstroLogger>;
@@ -0,0 +1,88 @@
1
+ import { AstroLogger } from "./core.js";
2
+ import { AstroError } from "../errors/index.js";
3
+ import { UnableToLoadLogger } from "../errors/errors-data.js";
4
+ import { default as nodeLoggerCreator, createNodeLoggerFromFlags } from "./impls/node.js";
5
+ import { default as consoleLoggerCreator } from "./impls/console.js";
6
+ import { default as jsonLoggerCreator } from "./impls/json.js";
7
+ import { default as composeLoggerCreator } from "./impls/compose.js";
8
+ async function loadLogger(config, level = "info") {
9
+ let cause = void 0;
10
+ try {
11
+ switch (config.entrypoint) {
12
+ case "astro/logger/node": {
13
+ return new AstroLogger({
14
+ destination: nodeLoggerCreator(config.config),
15
+ level
16
+ });
17
+ }
18
+ case "astro/logger/console": {
19
+ return new AstroLogger({
20
+ destination: consoleLoggerCreator(config.config),
21
+ level
22
+ });
23
+ }
24
+ case "astro/logger/json": {
25
+ return new AstroLogger({
26
+ destination: jsonLoggerCreator(config.config),
27
+ level
28
+ });
29
+ }
30
+ case "astro/logger/compose": {
31
+ let destinations = [];
32
+ if (config.config?.loggers) {
33
+ const loggers = config.config?.loggers;
34
+ destinations = await Promise.all(
35
+ loggers.map(async (loggerConfig) => {
36
+ const logger = await import(
37
+ /* @vite-ignore */
38
+ loggerConfig.entrypoint
39
+ );
40
+ return logger.default(loggerConfig.config);
41
+ })
42
+ );
43
+ }
44
+ return new AstroLogger({
45
+ destination: composeLoggerCreator(destinations),
46
+ level
47
+ });
48
+ }
49
+ default: {
50
+ const nodeLogger = await import(
51
+ /* @vite-ignore */
52
+ config.entrypoint
53
+ );
54
+ return new AstroLogger({
55
+ destination: nodeLogger.default(config.config),
56
+ level
57
+ });
58
+ }
59
+ }
60
+ } catch (e) {
61
+ if (e instanceof Error) {
62
+ cause = e;
63
+ }
64
+ }
65
+ const error = new AstroError({
66
+ ...UnableToLoadLogger,
67
+ message: UnableToLoadLogger.message(config.entrypoint)
68
+ });
69
+ if (cause) {
70
+ error.cause = cause;
71
+ }
72
+ throw error;
73
+ }
74
+ async function loadOrCreateNodeLogger(astroConfig, inlineAstroConfig) {
75
+ try {
76
+ if (astroConfig.experimental.logger) {
77
+ return await loadLogger(astroConfig.experimental.logger, inlineAstroConfig.logLevel);
78
+ } else {
79
+ return createNodeLoggerFromFlags(inlineAstroConfig);
80
+ }
81
+ } catch {
82
+ return createNodeLoggerFromFlags(inlineAstroConfig);
83
+ }
84
+ }
85
+ export {
86
+ loadLogger,
87
+ loadOrCreateNodeLogger
88
+ };
@@ -1,6 +1 @@
1
- import type { AstroInlineConfig } from '../../types/public/config.js';
2
- import { AstroLogger } from './core.js';
3
- import { type AstroLogMessage, type AstroLoggerDestination } from './core.js';
4
- export declare const nodeLogDestination: AstroLoggerDestination<AstroLogMessage>;
5
1
  export declare function enableVerboseLogging(): void;
6
- export declare function createNodeLogger(inlineConfig: AstroInlineConfig): AstroLogger;
@@ -1,33 +1,4 @@
1
1
  import { createDebug, enable as obugEnable } from "obug";
2
- import { AstroLogger } from "./core.js";
3
- import {
4
- getEventPrefix,
5
- levels
6
- } from "./core.js";
7
- const nodeLogDestination = {
8
- write(event) {
9
- let dest = process.stderr;
10
- if (levels[event.level] < levels["error"]) {
11
- dest = process.stdout;
12
- }
13
- let format = event._format ?? "default";
14
- let trailingLine = event.newLine ? "\n" : "";
15
- switch (format) {
16
- case "json": {
17
- dest.write(JSON.stringify({ message: event.message, label: event.label }) + trailingLine);
18
- return true;
19
- }
20
- case "default": {
21
- if (event.label === "SKIP_FORMAT") {
22
- dest.write(event.message + trailingLine);
23
- } else {
24
- dest.write(getEventPrefix(event) + " " + event.message + trailingLine);
25
- }
26
- return true;
27
- }
28
- }
29
- }
30
- };
31
2
  const debuggers = {};
32
3
  function debug(type, ...messages) {
33
4
  const namespace = `astro:${type}`;
@@ -43,15 +14,6 @@ function enableVerboseLogging() {
43
14
  'Tip: Set the DEBUG env variable directly for more control. Example: "DEBUG=astro:*,vite:* astro build".'
44
15
  );
45
16
  }
46
- function createNodeLogger(inlineConfig) {
47
- if (inlineConfig.logger) return inlineConfig.logger;
48
- return new AstroLogger({
49
- destination: nodeLogDestination,
50
- level: inlineConfig.logLevel ?? "info"
51
- });
52
- }
53
17
  export {
54
- createNodeLogger,
55
- enableVerboseLogging,
56
- nodeLogDestination
18
+ enableVerboseLogging
57
19
  };
@@ -0,0 +1,17 @@
1
+ import { type AstroLoggerLevel } from './core.js';
2
+ /**
3
+ * Returns `true` if `messageLevel` has a level equals or higher than `configuredLevel`. As a golden rule,
4
+ * the first argument should be level of the incoming message, and the second argument should be the
5
+ * configured level of the logger.
6
+ *
7
+ * @param messageLevel The level of the incoming message
8
+ * @param configuredLevel The level the logger is configured with
9
+ *
10
+ * @example
11
+ *
12
+ * ```js
13
+ * matchesLevel('error', 'info') // true, because 'error' has higher priority than 'info'
14
+ * matchesLevel('info', 'error') // false, because 'info' has lower priority than 'error'
15
+ * ```
16
+ */
17
+ export declare function matchesLevel(messageLevel: AstroLoggerLevel, configuredLevel: AstroLoggerLevel): boolean;
@@ -0,0 +1,7 @@
1
+ import { levels } from "./core.js";
2
+ function matchesLevel(messageLevel, configuredLevel) {
3
+ return levels[messageLevel] >= levels[configuredLevel];
4
+ }
5
+ export {
6
+ matchesLevel
7
+ };
@@ -276,7 +276,7 @@ function printHelp({
276
276
  message.push(
277
277
  linebreak(),
278
278
  ` ${bgGreen(black(` ${commandName} `))} ${green(
279
- `v${"6.1.10"}`
279
+ `v${"6.2.1"}`
280
280
  )} ${headline}`
281
281
  );
282
282
  }
@@ -74,7 +74,8 @@ function createContext({
74
74
  },
75
75
  session: void 0,
76
76
  cache: new DisabledAstroCache(),
77
- csp: void 0
77
+ csp: void 0,
78
+ logger: void 0
78
79
  };
79
80
  return Object.assign(context, {
80
81
  getActionResult: createGetActionResult(context.locals),
@@ -1,12 +1,12 @@
1
1
  import fs from "node:fs";
2
2
  import { createRequire } from "node:module";
3
3
  import { fileURLToPath, pathToFileURL } from "node:url";
4
- import { AstroIntegrationLogger } from "../../core/logger/core.js";
4
+ import { AstroIntegrationLogger } from "../logger/core.js";
5
5
  import { telemetry } from "../../events/index.js";
6
6
  import { eventCliSession } from "../../events/session.js";
7
7
  import { runHookConfigDone, runHookConfigSetup } from "../../integrations/hooks.js";
8
8
  import { resolveConfig } from "../config/config.js";
9
- import { createNodeLogger } from "../logger/node.js";
9
+ import { loadOrCreateNodeLogger } from "../logger/load.js";
10
10
  import { createSettings } from "../config/settings.js";
11
11
  import { createRoutesList } from "../routing/create-manifest.js";
12
12
  import { getPrerenderDefault } from "../../prerender/utils.js";
@@ -15,8 +15,8 @@ import createStaticPreviewServer from "./static-preview-server.js";
15
15
  import { getResolvedHostForHttpServer } from "./util.js";
16
16
  async function preview(inlineConfig) {
17
17
  ensureProcessNodeEnv("production");
18
- const logger = createNodeLogger(inlineConfig);
19
18
  const { userConfig, astroConfig } = await resolveConfig(inlineConfig ?? {}, "preview");
19
+ const logger = await loadOrCreateNodeLogger(astroConfig, inlineConfig ?? {});
20
20
  telemetry.record(eventCliSession("preview", userConfig));
21
21
  const _settings = await createSettings(
22
22
  astroConfig,
@@ -67,6 +67,7 @@ async function preview(inlineConfig) {
67
67
  base: settings.config.base,
68
68
  logger: new AstroIntegrationLogger(logger.options, settings.adapter.name),
69
69
  headers: settings.config.server.headers,
70
+ allowedHosts: settings.config.server.allowedHosts,
70
71
  root: settings.config.root
71
72
  });
72
73
  return server;
@@ -467,6 +467,26 @@ class RenderContext {
467
467
  renderContext.result?.scriptHashes.push(hash);
468
468
  }
469
469
  };
470
+ },
471
+ get logger() {
472
+ if (!pipeline.manifest.experimentalLogger) {
473
+ pipeline.logger.warn(
474
+ null,
475
+ "The Astro.logger is available only when experimental.logger is defined."
476
+ );
477
+ return void 0;
478
+ }
479
+ return {
480
+ info(msg) {
481
+ pipeline.logger.info(null, msg);
482
+ },
483
+ warn(msg) {
484
+ pipeline.logger.warn(null, msg);
485
+ },
486
+ error(msg) {
487
+ pipeline.logger.error(null, msg);
488
+ }
489
+ };
470
490
  }
471
491
  };
472
492
  }
@@ -544,7 +564,8 @@ class RenderContext {
544
564
  extraHead: [],
545
565
  extraStyleHashes,
546
566
  extraScriptHashes,
547
- propagators: /* @__PURE__ */ new Set()
567
+ propagators: /* @__PURE__ */ new Set(),
568
+ templateDepth: 0
548
569
  },
549
570
  cspDestination: manifest.csp?.cspDestination ?? (routeData.prerender ? "meta" : "header"),
550
571
  shouldInjectCspMetaTags,
@@ -698,6 +719,19 @@ class RenderContext {
698
719
  renderContext.result?.scriptHashes.push(hash);
699
720
  }
700
721
  };
722
+ },
723
+ get logger() {
724
+ return {
725
+ info(msg) {
726
+ pipeline.logger.info(null, msg);
727
+ },
728
+ warn(msg) {
729
+ pipeline.logger.warn(null, msg);
730
+ },
731
+ error(msg) {
732
+ pipeline.logger.error(null, msg);
733
+ }
734
+ };
701
735
  }
702
736
  };
703
737
  }
@@ -17,7 +17,7 @@ import { eventCliSession } from "../../events/session.js";
17
17
  import { runHookConfigDone, runHookConfigSetup } from "../../integrations/hooks.js";
18
18
  import { getTimeStat } from "../build/util.js";
19
19
  import { resolveConfig } from "../config/config.js";
20
- import { createNodeLogger } from "../logger/node.js";
20
+ import { loadOrCreateNodeLogger } from "../logger/load.js";
21
21
  import { createSettings } from "../config/settings.js";
22
22
  import { createVite } from "../create-vite.js";
23
23
  import {
@@ -32,8 +32,8 @@ import { ensureProcessNodeEnv } from "../util.js";
32
32
  import { normalizePath } from "../viteUtils.js";
33
33
  async function sync(inlineConfig, { fs, telemetry: _telemetry = false } = {}) {
34
34
  ensureProcessNodeEnv("production");
35
- const logger = createNodeLogger(inlineConfig);
36
35
  const { astroConfig, userConfig } = await resolveConfig(inlineConfig ?? {}, "sync");
36
+ const logger = await loadOrCreateNodeLogger(astroConfig, inlineConfig ?? {});
37
37
  if (_telemetry) {
38
38
  telemetry.record(eventCliSession("sync", userConfig));
39
39
  }
@@ -0,0 +1 @@
1
+ export type WaitUntilHook = (this: void, promise: Promise<unknown>) => void;
File without changes
@@ -142,6 +142,10 @@ async function createSerializedManifest(settings, encodedKey) {
142
142
  isStrictDynamic: getStrictDynamic(settings.config.security.csp)
143
143
  };
144
144
  }
145
+ let experimentalLogger = void 0;
146
+ if (settings.config.experimental.logger) {
147
+ experimentalLogger = settings.config.experimental.logger;
148
+ }
145
149
  return {
146
150
  rootDir: settings.config.root.toString(),
147
151
  srcDir: settings.config.srcDir.toString(),
@@ -195,7 +199,8 @@ async function createSerializedManifest(settings, encodedKey) {
195
199
  },
196
200
  logLevel: settings.logLevel,
197
201
  shouldInjectCspMetaTags: false,
198
- experimentalQueuedRendering: settings.config.experimental?.queuedRendering
202
+ experimentalQueuedRendering: settings.config.experimental?.queuedRendering,
203
+ experimentalLogger
199
204
  };
200
205
  }
201
206
  export {
@@ -1 +1 @@
1
- export { addAttribute, createAstro, createComponent, createTransitionScope, defineScriptVars, defineStyleVars, Fragment, maybeRenderHead, mergeSlots, render, renderComponent, renderHead, renderScript, renderSlot, renderTransition, spreadAttributes, unescapeHTML, } from '../server/index.js';
1
+ export { addAttribute, createAstro, createComponent, createTransitionScope, defineScriptVars, defineStyleVars, Fragment, maybeRenderHead, mergeSlots, render, renderComponent, renderHead, renderScript, renderSlot, renderTransition, templateEnter, templateExit, spreadAttributes, unescapeHTML, } from '../server/index.js';
@@ -14,6 +14,8 @@ import {
14
14
  renderScript,
15
15
  renderSlot,
16
16
  renderTransition,
17
+ templateEnter,
18
+ templateExit,
17
19
  spreadAttributes,
18
20
  unescapeHTML
19
21
  } from "../server/index.js";
@@ -34,5 +36,7 @@ export {
34
36
  renderSlot,
35
37
  renderTransition,
36
38
  spreadAttributes,
39
+ templateEnter,
40
+ templateExit,
37
41
  unescapeHTML
38
42
  };
@@ -90,6 +90,9 @@ function createAstro(site) {
90
90
  },
91
91
  get cache() {
92
92
  throw createError("cache");
93
+ },
94
+ get logger() {
95
+ throw createError("logger");
93
96
  }
94
97
  };
95
98
  }
@@ -6,6 +6,7 @@ export { renderJSX } from './jsx.js';
6
6
  export type { AstroComponentFactory, AstroComponentInstance, ComponentSlots, RenderInstruction, } from './render/index.js';
7
7
  export { addAttribute, createHeadAndContent, defineScriptVars, Fragment, maybeRenderHead, Renderer as Renderer, renderComponent, renderHead, renderHTMLElement, renderPage, renderScript, renderScriptElement, renderSlot, renderSlotToString, renderTemplate as render, renderTemplate, renderToString, renderUniqueStylesheet, voidElementNames, } from './render/index.js';
8
8
  export type { ServerIslandComponent } from './render/server-islands.js';
9
+ export { templateEnter, templateExit } from './render/template-depth.js';
9
10
  export { createTransitionScope, renderTransition } from './transition.js';
10
11
  export declare function mergeSlots(...slotted: unknown[]): Record<string, () => any>;
11
12
  export declare function spreadAttributes(values?: Record<any, any>, _name?: string, { class: scopedClassName }?: {
@@ -31,6 +31,7 @@ import {
31
31
  renderUniqueStylesheet,
32
32
  voidElementNames
33
33
  } from "./render/index.js";
34
+ import { templateEnter, templateExit } from "./render/template-depth.js";
34
35
  import { createTransitionScope, renderTransition } from "./transition.js";
35
36
  import { markHTMLString as markHTMLString2 } from "./escape.js";
36
37
  import { addAttribute as addAttribute2, Renderer as Renderer2 } from "./render/index.js";
@@ -117,6 +118,8 @@ export {
117
118
  renderTransition,
118
119
  renderUniqueStylesheet,
119
120
  spreadAttributes,
121
+ templateEnter,
122
+ templateExit,
120
123
  unescapeHTML,
121
124
  voidElementNames
122
125
  };
@@ -61,12 +61,28 @@ function stringifyChunk(result, chunk) {
61
61
  }
62
62
  case "script": {
63
63
  const { id, content } = instruction;
64
+ if (result._metadata.templateDepth > 0) {
65
+ return content;
66
+ }
64
67
  if (result._metadata.renderedScripts.has(id)) {
65
68
  return "";
66
69
  }
67
70
  result._metadata.renderedScripts.add(id);
68
71
  return content;
69
72
  }
73
+ case "template-enter": {
74
+ result._metadata.templateDepth++;
75
+ return "";
76
+ }
77
+ case "template-exit": {
78
+ if (result._metadata.templateDepth <= 0) {
79
+ throw new Error(
80
+ "Unexpected template-exit instruction without a matching template-enter. This may indicate that the compiler emitted unbalanced template boundaries, or that a component manually injected a template-exit render instruction."
81
+ );
82
+ }
83
+ result._metadata.templateDepth--;
84
+ return "";
85
+ }
70
86
  default: {
71
87
  throw new Error(`Unknown chunk type: ${chunk.type}`);
72
88
  }
@@ -26,6 +26,12 @@ export type RenderScriptInstruction = {
26
26
  id: string;
27
27
  content: string;
28
28
  };
29
- export type RenderInstruction = RenderDirectiveInstruction | RenderHeadInstruction | MaybeRenderHeadInstruction | RendererHydrationScriptInstruction | ServerIslandRuntimeInstruction | RenderScriptInstruction;
29
+ export type TemplateEnterInstruction = {
30
+ type: 'template-enter';
31
+ };
32
+ export type TemplateExitInstruction = {
33
+ type: 'template-exit';
34
+ };
35
+ export type RenderInstruction = RenderDirectiveInstruction | RenderHeadInstruction | MaybeRenderHeadInstruction | RendererHydrationScriptInstruction | ServerIslandRuntimeInstruction | RenderScriptInstruction | TemplateEnterInstruction | TemplateExitInstruction;
30
36
  export declare function createRenderInstruction<T extends RenderInstruction>(instruction: T): T;
31
37
  export declare function isRenderInstruction(chunk: any): chunk is RenderInstruction;
@@ -0,0 +1,13 @@
1
+ import type { SSRResult } from '../../../types/public/internal.js';
2
+ /**
3
+ * Emitted by the compiler when entering an HTML `<template>` element.
4
+ */
5
+ export declare function templateEnter(_result: SSRResult): {
6
+ type: "template-enter";
7
+ };
8
+ /**
9
+ * Emitted by the compiler when exiting an HTML `<template>` element.
10
+ */
11
+ export declare function templateExit(_result: SSRResult): {
12
+ type: "template-exit";
13
+ };
@@ -0,0 +1,11 @@
1
+ import { createRenderInstruction } from "./instruction.js";
2
+ function templateEnter(_result) {
3
+ return createRenderInstruction({ type: "template-enter" });
4
+ }
5
+ function templateExit(_result) {
6
+ return createRenderInstruction({ type: "template-exit" });
7
+ }
8
+ export {
9
+ templateEnter,
10
+ templateExit
11
+ };
@@ -1,3 +1,4 @@
1
+ import type { Server } from 'node:http';
1
2
  import type { AstroTimer } from '../core/config/timer.js';
2
3
  import type { TSConfig } from '../core/config/tsconfig.js';
3
4
  import type { AstroLogger, AstroLoggerLevel } from '../core/logger/core.js';
@@ -66,6 +67,7 @@ export interface AstroSettings {
66
67
  styleHashes: Required<CspObject['styleDirective']>['hashes'];
67
68
  };
68
69
  logLevel: AstroLoggerLevel;
70
+ fontsHttpServer: Server | null;
69
71
  }
70
72
  /** Generic interface for a component (Astro, Svelte, React, etc.) */
71
73
  export interface ComponentInstance {
@@ -137,3 +137,4 @@ export type InferGetStaticPropsType<T> = T extends (opts: GetStaticPathsOptions)
137
137
  export type Params = Record<string, string | undefined>;
138
138
  export type Props = Record<string, unknown>;
139
139
  export type CodeLanguage = BundledLanguage | LanguageRegistration | SpecialLanguage;
140
+ export type { AstroLoggerDestination, AstroLoggerLevel, AstroLoggerMessage, } from '../../core/logger/core.js';