astro 1.6.2 → 1.6.3

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 (86) hide show
  1. package/dist/@types/typed-emitter.d.ts +42 -0
  2. package/dist/@types/typed-emitter.js +0 -0
  3. package/dist/cli/index.js +13 -51
  4. package/dist/core/build/generate.js +10 -6
  5. package/dist/core/compile/compile.d.ts +3 -3
  6. package/dist/core/compile/compile.js +15 -10
  7. package/dist/core/compile/style.d.ts +7 -4
  8. package/dist/core/compile/style.js +65 -12
  9. package/dist/core/config/config.d.ts +7 -3
  10. package/dist/core/config/config.js +15 -12
  11. package/dist/core/config/index.d.ts +2 -2
  12. package/dist/core/config/index.js +4 -1
  13. package/dist/core/config/schema.d.ts +69 -69
  14. package/dist/core/config/settings.d.ts +3 -1
  15. package/dist/core/config/settings.js +23 -5
  16. package/dist/core/constants.js +1 -1
  17. package/dist/core/create-vite.d.ts +4 -1
  18. package/dist/core/create-vite.js +7 -4
  19. package/dist/core/dev/container.d.ts +36 -0
  20. package/dist/core/dev/container.js +109 -0
  21. package/dist/core/dev/dev.d.ts +24 -0
  22. package/dist/core/dev/dev.js +55 -0
  23. package/dist/core/dev/index.d.ts +3 -18
  24. package/dist/core/dev/index.js +8 -81
  25. package/dist/core/dev/restart.d.ts +25 -0
  26. package/dist/core/dev/restart.js +143 -0
  27. package/dist/core/endpoint/index.d.ts +2 -1
  28. package/dist/core/endpoint/index.js +12 -1
  29. package/dist/core/errors/dev/vite.d.ts +3 -2
  30. package/dist/core/errors/dev/vite.js +4 -6
  31. package/dist/core/messages.js +2 -2
  32. package/dist/core/module-loader/index.d.ts +3 -0
  33. package/dist/core/module-loader/index.js +6 -0
  34. package/dist/core/module-loader/loader.d.ts +42 -0
  35. package/dist/core/module-loader/loader.js +39 -0
  36. package/dist/core/module-loader/vite.d.ts +3 -0
  37. package/dist/core/module-loader/vite.js +62 -0
  38. package/dist/core/render/dev/css.d.ts +2 -2
  39. package/dist/core/render/dev/css.js +3 -3
  40. package/dist/core/render/dev/environment.d.ts +3 -3
  41. package/dist/core/render/dev/environment.js +3 -3
  42. package/dist/core/render/dev/index.d.ts +4 -4
  43. package/dist/core/render/dev/index.js +8 -8
  44. package/dist/core/render/dev/resolve.d.ts +2 -2
  45. package/dist/core/render/dev/resolve.js +2 -2
  46. package/dist/core/render/dev/scripts.d.ts +2 -2
  47. package/dist/core/render/dev/scripts.js +4 -4
  48. package/dist/core/render/dev/vite.d.ts +2 -2
  49. package/dist/core/render/dev/vite.js +5 -5
  50. package/dist/core/routing/manifest/create.d.ts +10 -3
  51. package/dist/core/routing/manifest/create.js +7 -6
  52. package/dist/core/util.d.ts +3 -4
  53. package/dist/core/util.js +10 -17
  54. package/dist/vite-plugin-astro/index.js +9 -20
  55. package/dist/vite-plugin-astro-postprocess/index.js +1 -1
  56. package/dist/vite-plugin-astro-server/base.d.ts +4 -0
  57. package/dist/vite-plugin-astro-server/base.js +36 -0
  58. package/dist/vite-plugin-astro-server/common.d.ts +2 -0
  59. package/dist/vite-plugin-astro-server/common.js +8 -0
  60. package/dist/vite-plugin-astro-server/controller.d.ts +26 -0
  61. package/dist/vite-plugin-astro-server/controller.js +77 -0
  62. package/dist/vite-plugin-astro-server/index.d.ts +3 -10
  63. package/dist/vite-plugin-astro-server/index.js +7 -336
  64. package/dist/vite-plugin-astro-server/plugin.d.ts +11 -0
  65. package/dist/vite-plugin-astro-server/plugin.js +54 -0
  66. package/dist/vite-plugin-astro-server/request.d.ts +7 -0
  67. package/dist/vite-plugin-astro-server/request.js +52 -0
  68. package/dist/vite-plugin-astro-server/response.d.ts +9 -0
  69. package/dist/vite-plugin-astro-server/response.js +85 -0
  70. package/dist/vite-plugin-astro-server/route.d.ts +13 -0
  71. package/dist/vite-plugin-astro-server/route.js +144 -0
  72. package/dist/vite-plugin-astro-server/server-state.d.ts +15 -0
  73. package/dist/vite-plugin-astro-server/server-state.js +42 -0
  74. package/dist/vite-plugin-jsx/index.js +2 -2
  75. package/dist/vite-plugin-load-fallback/index.d.ts +9 -0
  76. package/dist/vite-plugin-load-fallback/index.js +26 -0
  77. package/dist/vite-plugin-markdown/index.js +1 -1
  78. package/dist/vite-plugin-markdown-legacy/index.js +8 -24
  79. package/package.json +4 -2
  80. package/types.d.ts +1 -1
  81. package/dist/vite-style-transform/index.d.ts +0 -2
  82. package/dist/vite-style-transform/index.js +0 -5
  83. package/dist/vite-style-transform/style-transform.d.ts +0 -10
  84. package/dist/vite-style-transform/style-transform.js +0 -80
  85. package/dist/vite-style-transform/transform-with-vite.d.ts +0 -18
  86. package/dist/vite-style-transform/transform-with-vite.js +0 -33
@@ -0,0 +1,144 @@
1
+ import mime from "mime";
2
+ import { attachToResponse } from "../core/cookies/index.js";
3
+ import { call as callEndpoint } from "../core/endpoint/dev/index.js";
4
+ import { throwIfRedirectNotAllowed } from "../core/endpoint/index.js";
5
+ import { warn } from "../core/logger/core.js";
6
+ import { appendForwardSlash } from "../core/path.js";
7
+ import { preload, renderPage } from "../core/render/dev/index.js";
8
+ import { getParamsAndProps, GetParamsAndPropsError } from "../core/render/index.js";
9
+ import { createRequest } from "../core/request.js";
10
+ import { matchAllRoutes } from "../core/routing/index.js";
11
+ import { resolvePages } from "../core/util.js";
12
+ import { log404 } from "./common.js";
13
+ import { handle404Response, writeSSRResult, writeWebResponse } from "./response.js";
14
+ function getCustom404Route({ config }, manifest) {
15
+ const relPages = resolvePages(config).href.replace(config.root.href, "");
16
+ const pattern = new RegExp(`${appendForwardSlash(relPages)}404.(astro|md)`);
17
+ return manifest.routes.find((r) => r.component.match(pattern));
18
+ }
19
+ async function matchRoute(pathname, env, manifest) {
20
+ const { logging, settings, routeCache } = env;
21
+ const matches = matchAllRoutes(pathname, manifest);
22
+ for await (const maybeRoute of matches) {
23
+ const filePath = new URL(`./${maybeRoute.component}`, settings.config.root);
24
+ const preloadedComponent = await preload({ env, filePath });
25
+ const [, mod] = preloadedComponent;
26
+ const paramsAndPropsRes = await getParamsAndProps({
27
+ mod,
28
+ route: maybeRoute,
29
+ routeCache,
30
+ pathname,
31
+ logging,
32
+ ssr: settings.config.output === "server"
33
+ });
34
+ if (paramsAndPropsRes !== GetParamsAndPropsError.NoMatchingStaticPath) {
35
+ return {
36
+ route: maybeRoute,
37
+ filePath,
38
+ preloadedComponent,
39
+ mod
40
+ };
41
+ }
42
+ }
43
+ if (matches.length) {
44
+ warn(
45
+ logging,
46
+ "getStaticPaths",
47
+ `Route pattern matched, but no matching static path found. (${pathname})`
48
+ );
49
+ }
50
+ log404(logging, pathname);
51
+ const custom404 = getCustom404Route(settings, manifest);
52
+ if (custom404) {
53
+ const filePath = new URL(`./${custom404.component}`, settings.config.root);
54
+ const preloadedComponent = await preload({ env, filePath });
55
+ const [, mod] = preloadedComponent;
56
+ return {
57
+ route: custom404,
58
+ filePath,
59
+ preloadedComponent,
60
+ mod
61
+ };
62
+ }
63
+ return void 0;
64
+ }
65
+ async function handleRoute(matchedRoute, url, pathname, body, origin, env, manifest, req, res) {
66
+ const { logging, settings } = env;
67
+ if (!matchedRoute) {
68
+ return handle404Response(origin, req, res);
69
+ }
70
+ const { config } = settings;
71
+ const filePath = matchedRoute.filePath;
72
+ const { route, preloadedComponent, mod } = matchedRoute;
73
+ const buildingToSSR = config.output === "server";
74
+ const request = createRequest({
75
+ url,
76
+ headers: buildingToSSR ? req.headers : new Headers(),
77
+ method: req.method,
78
+ body,
79
+ logging,
80
+ ssr: buildingToSSR,
81
+ clientAddress: buildingToSSR ? req.socket.remoteAddress : void 0
82
+ });
83
+ const paramsAndPropsRes = await getParamsAndProps({
84
+ mod,
85
+ route,
86
+ routeCache: env.routeCache,
87
+ pathname,
88
+ logging,
89
+ ssr: config.output === "server"
90
+ });
91
+ const options = {
92
+ env,
93
+ filePath,
94
+ origin,
95
+ preload: preloadedComponent,
96
+ pathname,
97
+ request,
98
+ route
99
+ };
100
+ if (route.type === "endpoint") {
101
+ const result = await callEndpoint(options);
102
+ if (result.type === "response") {
103
+ if (result.response.headers.get("X-Astro-Response") === "Not-Found") {
104
+ const fourOhFourRoute = await matchRoute("/404", env, manifest);
105
+ return handleRoute(
106
+ fourOhFourRoute,
107
+ new URL("/404", url),
108
+ "/404",
109
+ body,
110
+ origin,
111
+ env,
112
+ manifest,
113
+ req,
114
+ res
115
+ );
116
+ }
117
+ throwIfRedirectNotAllowed(result.response, config);
118
+ await writeWebResponse(res, result.response);
119
+ } else {
120
+ let contentType = "text/plain";
121
+ const filepath = route.pathname || route.segments.map((segment) => segment.map((p) => p.content).join("")).join("/");
122
+ const computedMimeType = mime.getType(filepath);
123
+ if (computedMimeType) {
124
+ contentType = computedMimeType;
125
+ }
126
+ const response = new Response(result.body, {
127
+ status: 200,
128
+ headers: {
129
+ "Content-Type": `${contentType};charset=utf-8`
130
+ }
131
+ });
132
+ attachToResponse(response, result.cookies);
133
+ await writeWebResponse(res, response);
134
+ }
135
+ } else {
136
+ const result = await renderPage(options);
137
+ throwIfRedirectNotAllowed(result, config);
138
+ return await writeSSRResult(result, res);
139
+ }
140
+ }
141
+ export {
142
+ handleRoute,
143
+ matchRoute
144
+ };
@@ -0,0 +1,15 @@
1
+ export declare type ErrorState = 'fresh' | 'error';
2
+ export interface RouteState {
3
+ state: ErrorState;
4
+ error?: Error;
5
+ }
6
+ export interface ServerState {
7
+ routes: Map<string, RouteState>;
8
+ state: ErrorState;
9
+ error?: Error;
10
+ }
11
+ export declare function createServerState(): ServerState;
12
+ export declare function hasAnyFailureState(serverState: ServerState): boolean;
13
+ export declare function setRouteError(serverState: ServerState, pathname: string, error: Error): void;
14
+ export declare function setServerError(serverState: ServerState, error: Error): void;
15
+ export declare function clearRouteError(serverState: ServerState, pathname: string): void;
@@ -0,0 +1,42 @@
1
+ function createServerState() {
2
+ return {
3
+ routes: /* @__PURE__ */ new Map(),
4
+ state: "fresh"
5
+ };
6
+ }
7
+ function hasAnyFailureState(serverState) {
8
+ return serverState.state !== "fresh";
9
+ }
10
+ function setRouteError(serverState, pathname, error) {
11
+ if (serverState.routes.has(pathname)) {
12
+ const routeState = serverState.routes.get(pathname);
13
+ routeState.state = "error";
14
+ routeState.error = error;
15
+ } else {
16
+ const routeState = {
17
+ state: "error",
18
+ error
19
+ };
20
+ serverState.routes.set(pathname, routeState);
21
+ }
22
+ serverState.state = "error";
23
+ serverState.error = error;
24
+ }
25
+ function setServerError(serverState, error) {
26
+ serverState.state = "error";
27
+ serverState.error = error;
28
+ }
29
+ function clearRouteError(serverState, pathname) {
30
+ if (serverState.routes.has(pathname)) {
31
+ serverState.routes.delete(pathname);
32
+ }
33
+ serverState.state = "fresh";
34
+ serverState.error = void 0;
35
+ }
36
+ export {
37
+ clearRouteError,
38
+ createServerState,
39
+ hasAnyFailureState,
40
+ setRouteError,
41
+ setServerError
42
+ };
@@ -4,7 +4,7 @@ import esbuild from "esbuild";
4
4
  import * as colors from "kleur/colors";
5
5
  import path from "path";
6
6
  import { error } from "../core/logger/core.js";
7
- import { isMarkdownFile, parseNpmName } from "../core/util.js";
7
+ import { parseNpmName } from "../core/util.js";
8
8
  import tagExportsPlugin from "./tag.js";
9
9
  const JSX_EXTENSIONS = /* @__PURE__ */ new Set([".jsx", ".tsx", ".mdx"]);
10
10
  const IMPORT_STATEMENTS = {
@@ -131,7 +131,7 @@ function jsx({ settings, logging }) {
131
131
  return null;
132
132
  }
133
133
  const { mode } = viteConfig;
134
- if (id.includes(".mdx") || isMarkdownFile(id, { criteria: "includes" })) {
134
+ if (id.endsWith(".mdx")) {
135
135
  const { code: jsxCode2 } = await esbuild.transform(code, {
136
136
  loader: getEsbuildLoader(path.extname(id)),
137
137
  jsx: "preserve",
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import nodeFs from 'fs';
3
+ import type * as vite from 'vite';
4
+ declare type NodeFileSystemModule = typeof nodeFs;
5
+ export interface LoadFallbackPluginParams {
6
+ fs?: NodeFileSystemModule;
7
+ }
8
+ export default function loadFallbackPlugin({ fs }: LoadFallbackPluginParams): vite.Plugin | false;
9
+ export {};
@@ -0,0 +1,26 @@
1
+ import nodeFs from "fs";
2
+ function loadFallbackPlugin({ fs }) {
3
+ if (!fs || fs === nodeFs) {
4
+ return false;
5
+ }
6
+ return {
7
+ name: "astro:load-fallback",
8
+ enforce: "post",
9
+ async load(id) {
10
+ try {
11
+ return await fs.promises.readFile(cleanUrl(id), "utf-8");
12
+ } catch (e) {
13
+ try {
14
+ return await fs.promises.readFile(id, "utf-8");
15
+ } catch (e2) {
16
+ }
17
+ }
18
+ }
19
+ };
20
+ }
21
+ const queryRE = /\?.*$/s;
22
+ const hashRE = /#.*$/s;
23
+ const cleanUrl = (url) => url.replace(hashRE, "").replace(queryRE, "");
24
+ export {
25
+ loadFallbackPlugin as default
26
+ };
@@ -39,7 +39,7 @@ function markdown({ settings, logging }) {
39
39
  enforce: "pre",
40
40
  name: "astro:markdown",
41
41
  async load(id) {
42
- if (isMarkdownFile(id, { criteria: "endsWith" })) {
42
+ if (isMarkdownFile(id)) {
43
43
  const { fileId, fileUrl } = getFileInfo(id, settings.config);
44
44
  const rawFile = await fs.promises.readFile(fileId, "utf-8");
45
45
  const raw = safeMatter(rawFile, id);
@@ -9,10 +9,6 @@ import { cachedCompilation } from "../core/compile/index.js";
9
9
  import { AstroErrorCodes, MarkdownError } from "../core/errors/index.js";
10
10
  import { isMarkdownFile } from "../core/util.js";
11
11
  import { getFileInfo } from "../vite-plugin-utils/index.js";
12
- import {
13
- createTransformStyles,
14
- createViteStyleTransformer
15
- } from "../vite-style-transform/index.js";
16
12
  const MARKDOWN_IMPORT_FLAG = "?mdImport";
17
13
  const MARKDOWN_CONTENT_FLAG = "?content";
18
14
  function safeMatter(source, id) {
@@ -62,23 +58,16 @@ function markdown({ settings }) {
62
58
  }
63
59
  return false;
64
60
  }
65
- let styleTransformer;
66
- let viteDevServer;
61
+ let resolvedConfig;
67
62
  return {
68
63
  name: "astro:markdown",
69
64
  enforce: "pre",
70
- configResolved(_resolvedConfig) {
71
- styleTransformer = createViteStyleTransformer(_resolvedConfig);
72
- },
73
- configureServer(server) {
74
- styleTransformer.viteDevServer = server;
75
- },
76
65
  async resolveId(id, importer, options) {
77
- if (isMarkdownFile(id, { criteria: "endsWith", suffix: MARKDOWN_CONTENT_FLAG })) {
66
+ if (isMarkdownFile(id, { suffix: MARKDOWN_CONTENT_FLAG })) {
78
67
  const resolvedId = await this.resolve(id, importer, { skipSelf: true, ...options });
79
68
  return resolvedId == null ? void 0 : resolvedId.id.replace(MARKDOWN_CONTENT_FLAG, "");
80
69
  }
81
- if (isMarkdownFile(id, { criteria: "endsWith" }) && !isRootImport(importer)) {
70
+ if (isMarkdownFile(id) && !isRootImport(importer)) {
82
71
  const resolvedId = await this.resolve(id, importer, { skipSelf: true, ...options });
83
72
  if (resolvedId) {
84
73
  return resolvedId.id + MARKDOWN_IMPORT_FLAG;
@@ -87,7 +76,7 @@ function markdown({ settings }) {
87
76
  return void 0;
88
77
  },
89
78
  async load(id, opts) {
90
- if (isMarkdownFile(id, { criteria: "endsWith", suffix: MARKDOWN_IMPORT_FLAG })) {
79
+ if (isMarkdownFile(id, { suffix: MARKDOWN_IMPORT_FLAG })) {
91
80
  const { fileId, fileUrl } = getFileInfo(id, config);
92
81
  const source = await fs.promises.readFile(fileId, "utf8");
93
82
  const { data: frontmatter, content: rawContent } = safeMatter(source, fileId);
@@ -122,7 +111,7 @@ function markdown({ settings }) {
122
111
  map: null
123
112
  };
124
113
  }
125
- if (isMarkdownFile(id, { criteria: "endsWith" })) {
114
+ if (isMarkdownFile(id)) {
126
115
  const filename = normalizeFilename(id);
127
116
  const source = await fs.promises.readFile(filename, "utf8");
128
117
  const renderOpts = config.markdown;
@@ -176,15 +165,10 @@ ${astroResult}
176
165
  <head></head>${astroResult}`;
177
166
  }
178
167
  const compileProps = {
179
- config,
168
+ astroConfig: config,
169
+ viteConfig: resolvedConfig,
180
170
  filename,
181
- source: astroResult,
182
- transformStyle: createTransformStyles(
183
- styleTransformer,
184
- filename,
185
- Boolean(opts == null ? void 0 : opts.ssr),
186
- this
187
- )
171
+ source: astroResult
188
172
  };
189
173
  let transformResult = await cachedCompilation(compileProps);
190
174
  let { code: tsResult } = transformResult;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "astro",
3
- "version": "1.6.2",
3
+ "version": "1.6.3",
4
4
  "description": "Astro is a modern site builder with web best practices, performance, and DX front-of-mind.",
5
5
  "type": "module",
6
6
  "author": "withastro",
@@ -176,8 +176,10 @@
176
176
  "astro-scripts": "0.0.9",
177
177
  "chai": "^4.3.6",
178
178
  "cheerio": "^1.0.0-rc.11",
179
+ "memfs": "^3.4.7",
179
180
  "mocha": "^9.2.2",
180
181
  "node-fetch": "^3.2.5",
182
+ "node-mocks-http": "^1.11.0",
181
183
  "rehype-autolink-headings": "^6.1.1",
182
184
  "rehype-slug": "^5.0.1",
183
185
  "rehype-toc": "^3.0.2",
@@ -197,7 +199,7 @@
197
199
  "dev": "astro-scripts dev --prebuild \"src/runtime/server/astro-island.ts\" --prebuild \"src/runtime/client/{idle,load,media,only,visible}.ts\" \"src/**/*.ts\"",
198
200
  "postbuild": "astro-scripts copy \"src/**/*.astro\"",
199
201
  "benchmark": "node test/benchmark/dev.bench.js && node test/benchmark/build.bench.js",
200
- "test:unit": "mocha --exit --timeout 2000 ./test/units/**/*.test.js",
202
+ "test:unit": "mocha --exit --timeout 30000 ./test/units/**/*.test.js",
201
203
  "test": "pnpm run test:unit && mocha --exit --timeout 20000 --ignore **/lit-element.test.js && mocha --timeout 20000 **/lit-element.test.js",
202
204
  "test:match": "mocha --timeout 20000 -g",
203
205
  "test:e2e": "playwright test",
package/types.d.ts CHANGED
@@ -6,7 +6,7 @@ export type HTMLTag = keyof astroHTML.JSX.DefinedIntrinsicElements;
6
6
  /** The built-in attributes for any known HTML or SVG element name */
7
7
  export type HTMLAttributes<Tag extends HTMLTag> = Omit<
8
8
  astroHTML.JSX.IntrinsicElements[Tag],
9
- keyof AstroBuiltinAttributes
9
+ keyof Omit<AstroBuiltinAttributes, 'class:list'>
10
10
  >;
11
11
 
12
12
  // TODO: Enable generic/polymorphic types once compiler output stabilizes in the Language Server
@@ -1,2 +0,0 @@
1
- export type { ViteStyleTransformer } from './style-transform';
2
- export { createTransformStyles, createViteStyleTransformer } from './style-transform.js';
@@ -1,5 +0,0 @@
1
- import { createTransformStyles, createViteStyleTransformer } from "./style-transform.js";
2
- export {
3
- createTransformStyles,
4
- createViteStyleTransformer
5
- };
@@ -1,10 +0,0 @@
1
- import type { PluginContext } from 'rollup';
2
- import type { TransformStyle } from '../core/compile/index';
3
- import { TransformStyleWithVite } from './transform-with-vite.js';
4
- import type * as vite from 'vite';
5
- export declare type ViteStyleTransformer = {
6
- viteDevServer?: vite.ViteDevServer;
7
- transformStyleWithVite: TransformStyleWithVite;
8
- };
9
- export declare function createViteStyleTransformer(viteConfig: vite.ResolvedConfig): ViteStyleTransformer;
10
- export declare function createTransformStyles(viteStyleTransformer: ViteStyleTransformer, filename: string, ssr: boolean, pluginContext?: PluginContext): TransformStyle;
@@ -1,80 +0,0 @@
1
- import { fileURLToPath } from "url";
2
- import { createTransformStyleWithViteFn } from "./transform-with-vite.js";
3
- import { readFileSync } from "fs";
4
- import { AstroErrorCodes } from "../core/errors/codes.js";
5
- import { CSSError } from "../core/errors/errors.js";
6
- import { positionAt } from "../core/errors/index.js";
7
- function createViteStyleTransformer(viteConfig) {
8
- return {
9
- transformStyleWithVite: createTransformStyleWithViteFn(viteConfig)
10
- };
11
- }
12
- function getNormalizedIDForPostCSS(filename) {
13
- try {
14
- const filenameURL = new URL(`file://${filename}`);
15
- return fileURLToPath(filenameURL);
16
- } catch (err) {
17
- return filename;
18
- }
19
- }
20
- function createTransformStyles(viteStyleTransformer, filename, ssr, pluginContext) {
21
- const normalizedID = getNormalizedIDForPostCSS(filename);
22
- return async function(styleSource, lang) {
23
- var _a;
24
- let result;
25
- try {
26
- result = await viteStyleTransformer.transformStyleWithVite.call(pluginContext, {
27
- id: normalizedID,
28
- source: styleSource,
29
- lang,
30
- ssr,
31
- viteDevServer: viteStyleTransformer.viteDevServer
32
- });
33
- } catch (err) {
34
- const fileContent = readFileSync(filename).toString();
35
- const styleTagBeginning = fileContent.indexOf(((_a = err.input) == null ? void 0 : _a.source) ?? err.code);
36
- if (err.name === "CssSyntaxError") {
37
- const errorLine = positionAt(styleTagBeginning, fileContent).line + (err.line ?? 0);
38
- throw new CSSError({
39
- errorCode: AstroErrorCodes.CssSyntaxError,
40
- message: err.reason,
41
- location: {
42
- file: filename,
43
- line: errorLine,
44
- column: err.column
45
- }
46
- });
47
- }
48
- if (err.line && err.column) {
49
- const errorLine = positionAt(styleTagBeginning, fileContent).line + (err.line ?? 0);
50
- throw new CSSError({
51
- errorCode: AstroErrorCodes.CssUnknownError,
52
- message: err.message,
53
- location: {
54
- file: filename,
55
- line: errorLine,
56
- column: err.column
57
- },
58
- frame: err.frame
59
- });
60
- }
61
- const errorPosition = positionAt(styleTagBeginning, fileContent);
62
- errorPosition.line += 1;
63
- throw new CSSError({
64
- errorCode: AstroErrorCodes.CssUnknownError,
65
- message: err.message,
66
- location: {
67
- file: filename,
68
- line: errorPosition.line,
69
- column: 0
70
- },
71
- frame: err.frame
72
- });
73
- }
74
- return result;
75
- };
76
- }
77
- export {
78
- createTransformStyles,
79
- createViteStyleTransformer
80
- };
@@ -1,18 +0,0 @@
1
- import type * as vite from 'vite';
2
- export declare type TransformHook = (code: string, id: string, ssr?: boolean) => Promise<vite.TransformResult>;
3
- interface TransformStyleWithViteOptions {
4
- id: string;
5
- source: string;
6
- lang: string;
7
- ssr?: boolean;
8
- viteDevServer?: vite.ViteDevServer;
9
- }
10
- export interface TransformStyleWithVite {
11
- (options: TransformStyleWithViteOptions): Promise<{
12
- code: string;
13
- map: vite.TransformResult['map'];
14
- deps: Set<string>;
15
- } | null>;
16
- }
17
- export declare function createTransformStyleWithViteFn(viteConfig: vite.ResolvedConfig): TransformStyleWithVite;
18
- export {};
@@ -1,33 +0,0 @@
1
- import { STYLE_EXTENSIONS } from "../core/render/util.js";
2
- function createTransformStyleWithViteFn(viteConfig) {
3
- const viteCSSPlugin = viteConfig.plugins.find(({ name }) => name === "vite:css");
4
- if (!viteCSSPlugin)
5
- throw new Error(`vite:css plugin couldn't be found`);
6
- if (!viteCSSPlugin.transform)
7
- throw new Error(`vite:css has no transform() hook`);
8
- const transformCss = viteCSSPlugin.transform;
9
- return async function({ id, source, lang, ssr, viteDevServer }) {
10
- if (!STYLE_EXTENSIONS.has(lang)) {
11
- return null;
12
- }
13
- const styleId = `${id}?astro&type=style&lang${lang}`;
14
- viteDevServer == null ? void 0 : viteDevServer.moduleGraph.ensureEntryFromUrl(styleId, ssr, false);
15
- const ctx = this ?? { addWatchFile: () => {
16
- } };
17
- const transformResult = await transformCss.call(ctx, source, styleId, ssr);
18
- const { code, map } = transformResult;
19
- const deps = /* @__PURE__ */ new Set();
20
- const mod = viteDevServer == null ? void 0 : viteDevServer.moduleGraph.getModuleById(styleId);
21
- if (mod) {
22
- for (const imported of mod.importedModules) {
23
- if (imported.file) {
24
- deps.add(imported.file);
25
- }
26
- }
27
- }
28
- return { code, map, deps };
29
- };
30
- }
31
- export {
32
- createTransformStyleWithViteFn
33
- };