astro 1.5.0 → 1.5.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.
- package/astro-jsx.d.ts +8 -6
- package/config.d.ts +1 -1
- package/dist/core/add/index.js +1 -1
- package/dist/core/app/index.js +45 -43
- package/dist/core/build/generate.js +14 -12
- package/dist/core/config/schema.js +12 -1
- package/dist/core/config/tsconfig.js +5 -6
- package/dist/core/constants.js +1 -1
- package/dist/core/dev/index.js +1 -1
- package/dist/core/endpoint/dev/index.d.ts +2 -1
- package/dist/core/endpoint/dev/index.js +13 -9
- package/dist/core/endpoint/index.d.ts +4 -3
- package/dist/core/endpoint/index.js +16 -8
- package/dist/core/messages.js +2 -2
- package/dist/core/render/context.d.ts +20 -0
- package/dist/core/render/context.js +15 -0
- package/dist/core/render/core.d.ts +4 -24
- package/dist/core/render/core.js +26 -47
- package/dist/core/render/dev/environment.d.ts +9 -0
- package/dist/core/render/dev/environment.js +30 -0
- package/dist/core/render/dev/index.d.ts +22 -5
- package/dist/core/render/dev/index.js +38 -69
- package/dist/core/render/dev/resolve.d.ts +2 -0
- package/dist/core/render/dev/resolve.js +14 -0
- package/dist/core/render/environment.d.ts +29 -0
- package/dist/core/render/environment.js +21 -0
- package/dist/core/render/index.d.ts +6 -0
- package/dist/core/render/index.js +13 -0
- package/dist/core/render/renderer.d.ts +9 -0
- package/dist/core/render/renderer.js +23 -0
- package/dist/core/render/result.js +1 -1
- package/dist/core/routing/manifest/create.js +14 -5
- package/dist/core/routing/manifest/generator.js +8 -3
- package/dist/jsx/component.d.ts +1 -0
- package/dist/jsx/component.js +10 -0
- package/dist/jsx/index.d.ts +2 -0
- package/dist/jsx/index.js +6 -0
- package/dist/jsx-runtime/index.js +1 -1
- package/dist/runtime/server/index.d.ts +1 -0
- package/dist/runtime/server/index.js +2 -0
- package/dist/vite-plugin-astro-server/index.js +35 -60
- package/env.d.ts +1 -1
- package/package.json +5 -2
package/astro-jsx.d.ts
CHANGED
|
@@ -23,12 +23,12 @@ declare namespace astroHTML.JSX {
|
|
|
23
23
|
children?: Children;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
type AstroBuiltinProps = import('./dist/@types/astro').AstroBuiltinProps;
|
|
27
|
-
type AstroBuiltinAttributes = import('./dist/@types/astro').AstroBuiltinAttributes;
|
|
28
|
-
type AstroDefineVarsAttribute = import('./dist/@types/astro').AstroDefineVarsAttribute;
|
|
29
|
-
type AstroScriptAttributes = import('./dist/@types/astro').AstroScriptAttributes &
|
|
26
|
+
type AstroBuiltinProps = import('./dist/@types/astro.js').AstroBuiltinProps;
|
|
27
|
+
type AstroBuiltinAttributes = import('./dist/@types/astro.js').AstroBuiltinAttributes;
|
|
28
|
+
type AstroDefineVarsAttribute = import('./dist/@types/astro.js').AstroDefineVarsAttribute;
|
|
29
|
+
type AstroScriptAttributes = import('./dist/@types/astro.js').AstroScriptAttributes &
|
|
30
30
|
AstroDefineVarsAttribute;
|
|
31
|
-
type AstroStyleAttributes = import('./dist/@types/astro').AstroStyleAttributes &
|
|
31
|
+
type AstroStyleAttributes = import('./dist/@types/astro.js').AstroStyleAttributes &
|
|
32
32
|
AstroDefineVarsAttribute;
|
|
33
33
|
|
|
34
34
|
// This is an unfortunate use of `any`, but unfortunately we can't make a type that works for every framework
|
|
@@ -1288,7 +1288,7 @@ declare namespace astroHTML.JSX {
|
|
|
1288
1288
|
zoomAndPan?: string | undefined | null;
|
|
1289
1289
|
}
|
|
1290
1290
|
|
|
1291
|
-
interface
|
|
1291
|
+
interface DefinedIntrinsicElements {
|
|
1292
1292
|
// HTML
|
|
1293
1293
|
a: AnchorHTMLAttributes;
|
|
1294
1294
|
abbr: HTMLAttributes;
|
|
@@ -1461,7 +1461,9 @@ declare namespace astroHTML.JSX {
|
|
|
1461
1461
|
tspan: SVGAttributes;
|
|
1462
1462
|
use: SVGAttributes;
|
|
1463
1463
|
view: SVGAttributes;
|
|
1464
|
+
}
|
|
1464
1465
|
|
|
1466
|
+
interface IntrinsicElements extends DefinedIntrinsicElements {
|
|
1465
1467
|
// Allow for arbitrary elements
|
|
1466
1468
|
[name: string]: { [name: string]: any };
|
|
1467
1469
|
}
|
package/config.d.ts
CHANGED
package/dist/core/add/index.js
CHANGED
|
@@ -475,7 +475,7 @@ async function getInstallIntegrationsCommand({
|
|
|
475
475
|
case "yarn":
|
|
476
476
|
return { pm: "yarn", command: "add", flags: [], dependencies };
|
|
477
477
|
case "pnpm":
|
|
478
|
-
return { pm: "pnpm", command: "
|
|
478
|
+
return { pm: "pnpm", command: "add", flags: [], dependencies };
|
|
479
479
|
default:
|
|
480
480
|
return null;
|
|
481
481
|
}
|
package/dist/core/app/index.js
CHANGED
|
@@ -20,14 +20,18 @@ var __privateMethod = (obj, member, method) => {
|
|
|
20
20
|
__accessCheck(obj, member, "access private method");
|
|
21
21
|
return method;
|
|
22
22
|
};
|
|
23
|
-
var _manifest, _manifestData, _routeDataToRouteInfo,
|
|
23
|
+
var _env, _manifest, _manifestData, _routeDataToRouteInfo, _encoder, _logging, _renderPage, renderPage_fn, _callEndpoint, callEndpoint_fn;
|
|
24
24
|
import mime from "mime";
|
|
25
|
-
import { getSetCookiesFromResponse } from "../cookies/index.js";
|
|
25
|
+
import { attachToResponse, getSetCookiesFromResponse } from "../cookies/index.js";
|
|
26
26
|
import { call as callEndpoint } from "../endpoint/index.js";
|
|
27
27
|
import { consoleLogDestination } from "../logger/console.js";
|
|
28
28
|
import { error } from "../logger/core.js";
|
|
29
29
|
import { joinPaths, prependForwardSlash } from "../path.js";
|
|
30
|
-
import {
|
|
30
|
+
import {
|
|
31
|
+
createEnvironment,
|
|
32
|
+
createRenderContext,
|
|
33
|
+
renderPage
|
|
34
|
+
} from "../render/index.js";
|
|
31
35
|
import { RouteCache } from "../render/route-cache.js";
|
|
32
36
|
import {
|
|
33
37
|
createLinkStylesheetElementSet,
|
|
@@ -41,23 +45,46 @@ class App {
|
|
|
41
45
|
constructor(manifest, streaming = true) {
|
|
42
46
|
__privateAdd(this, _renderPage);
|
|
43
47
|
__privateAdd(this, _callEndpoint);
|
|
48
|
+
__privateAdd(this, _env, void 0);
|
|
44
49
|
__privateAdd(this, _manifest, void 0);
|
|
45
50
|
__privateAdd(this, _manifestData, void 0);
|
|
46
51
|
__privateAdd(this, _routeDataToRouteInfo, void 0);
|
|
47
|
-
__privateAdd(this, _routeCache, void 0);
|
|
48
52
|
__privateAdd(this, _encoder, new TextEncoder());
|
|
49
53
|
__privateAdd(this, _logging, {
|
|
50
54
|
dest: consoleLogDestination,
|
|
51
55
|
level: "info"
|
|
52
56
|
});
|
|
53
|
-
__privateAdd(this, _streaming, void 0);
|
|
54
57
|
__privateSet(this, _manifest, manifest);
|
|
55
58
|
__privateSet(this, _manifestData, {
|
|
56
59
|
routes: manifest.routes.map((route) => route.routeData)
|
|
57
60
|
});
|
|
58
61
|
__privateSet(this, _routeDataToRouteInfo, new Map(manifest.routes.map((route) => [route.routeData, route])));
|
|
59
|
-
__privateSet(this,
|
|
60
|
-
|
|
62
|
+
__privateSet(this, _env, createEnvironment({
|
|
63
|
+
adapterName: manifest.adapterName,
|
|
64
|
+
logging: __privateGet(this, _logging),
|
|
65
|
+
markdown: manifest.markdown,
|
|
66
|
+
mode: "production",
|
|
67
|
+
renderers: manifest.renderers,
|
|
68
|
+
async resolve(specifier) {
|
|
69
|
+
if (!(specifier in manifest.entryModules)) {
|
|
70
|
+
throw new Error(`Unable to resolve [${specifier}]`);
|
|
71
|
+
}
|
|
72
|
+
const bundlePath = manifest.entryModules[specifier];
|
|
73
|
+
switch (true) {
|
|
74
|
+
case bundlePath.startsWith("data:"):
|
|
75
|
+
case bundlePath.length === 0: {
|
|
76
|
+
return bundlePath;
|
|
77
|
+
}
|
|
78
|
+
default: {
|
|
79
|
+
return prependForwardSlash(joinPaths(manifest.base, bundlePath));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
routeCache: new RouteCache(__privateGet(this, _logging)),
|
|
84
|
+
site: __privateGet(this, _manifest).site,
|
|
85
|
+
ssr: true,
|
|
86
|
+
streaming
|
|
87
|
+
}));
|
|
61
88
|
}
|
|
62
89
|
match(request, { matchNotFound = false } = {}) {
|
|
63
90
|
const url = new URL(request.url);
|
|
@@ -116,13 +143,12 @@ class App {
|
|
|
116
143
|
return getSetCookiesFromResponse(response);
|
|
117
144
|
}
|
|
118
145
|
}
|
|
146
|
+
_env = new WeakMap();
|
|
119
147
|
_manifest = new WeakMap();
|
|
120
148
|
_manifestData = new WeakMap();
|
|
121
149
|
_routeDataToRouteInfo = new WeakMap();
|
|
122
|
-
_routeCache = new WeakMap();
|
|
123
150
|
_encoder = new WeakMap();
|
|
124
151
|
_logging = new WeakMap();
|
|
125
|
-
_streaming = new WeakMap();
|
|
126
152
|
_renderPage = new WeakSet();
|
|
127
153
|
renderPage_fn = async function(request, routeData, mod, status = 200) {
|
|
128
154
|
const url = new URL(request.url);
|
|
@@ -144,40 +170,16 @@ renderPage_fn = async function(request, routeData, mod, status = 200) {
|
|
|
144
170
|
}
|
|
145
171
|
}
|
|
146
172
|
try {
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
links,
|
|
150
|
-
logging: __privateGet(this, _logging),
|
|
151
|
-
markdown: manifest.markdown,
|
|
152
|
-
mod,
|
|
153
|
-
mode: "production",
|
|
173
|
+
const ctx = createRenderContext({
|
|
174
|
+
request,
|
|
154
175
|
origin: url.origin,
|
|
155
176
|
pathname: url.pathname,
|
|
156
177
|
scripts,
|
|
157
|
-
|
|
158
|
-
async resolve(specifier) {
|
|
159
|
-
if (!(specifier in manifest.entryModules)) {
|
|
160
|
-
throw new Error(`Unable to resolve [${specifier}]`);
|
|
161
|
-
}
|
|
162
|
-
const bundlePath = manifest.entryModules[specifier];
|
|
163
|
-
switch (true) {
|
|
164
|
-
case bundlePath.startsWith("data:"):
|
|
165
|
-
case bundlePath.length === 0: {
|
|
166
|
-
return bundlePath;
|
|
167
|
-
}
|
|
168
|
-
default: {
|
|
169
|
-
return prependForwardSlash(joinPaths(manifest.base, bundlePath));
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
},
|
|
178
|
+
links,
|
|
173
179
|
route: routeData,
|
|
174
|
-
routeCache: __privateGet(this, _routeCache),
|
|
175
|
-
site: __privateGet(this, _manifest).site,
|
|
176
|
-
ssr: true,
|
|
177
|
-
request,
|
|
178
|
-
streaming: __privateGet(this, _streaming),
|
|
179
180
|
status
|
|
180
181
|
});
|
|
182
|
+
const response = await renderPage(mod, ctx, __privateGet(this, _env));
|
|
181
183
|
return response;
|
|
182
184
|
} catch (err) {
|
|
183
185
|
error(__privateGet(this, _logging), "ssr", err.stack || err.message || String(err));
|
|
@@ -191,16 +193,14 @@ _callEndpoint = new WeakSet();
|
|
|
191
193
|
callEndpoint_fn = async function(request, routeData, mod, status = 200) {
|
|
192
194
|
const url = new URL(request.url);
|
|
193
195
|
const handler = mod;
|
|
194
|
-
const
|
|
195
|
-
|
|
196
|
+
const ctx = createRenderContext({
|
|
197
|
+
request,
|
|
196
198
|
origin: url.origin,
|
|
197
199
|
pathname: url.pathname,
|
|
198
|
-
request,
|
|
199
200
|
route: routeData,
|
|
200
|
-
routeCache: __privateGet(this, _routeCache),
|
|
201
|
-
ssr: true,
|
|
202
201
|
status
|
|
203
202
|
});
|
|
203
|
+
const result = await callEndpoint(handler, __privateGet(this, _env), ctx);
|
|
204
204
|
if (result.type === "response") {
|
|
205
205
|
if (result.response.headers.get("X-Astro-Response") === "Not-Found") {
|
|
206
206
|
const fourOhFourRequest = new Request(new URL("/404", request.url));
|
|
@@ -221,10 +221,12 @@ callEndpoint_fn = async function(request, routeData, mod, status = 200) {
|
|
|
221
221
|
}
|
|
222
222
|
const bytes = __privateGet(this, _encoder).encode(body);
|
|
223
223
|
headers.set("Content-Length", bytes.byteLength.toString());
|
|
224
|
-
|
|
224
|
+
const response = new Response(bytes, {
|
|
225
225
|
status: 200,
|
|
226
226
|
headers
|
|
227
227
|
});
|
|
228
|
+
attachToResponse(response, result.cookies);
|
|
229
|
+
return response;
|
|
228
230
|
}
|
|
229
231
|
};
|
|
230
232
|
export {
|
|
@@ -13,7 +13,7 @@ import { runHookBuildGenerated } from "../../integrations/index.js";
|
|
|
13
13
|
import { BEFORE_HYDRATION_SCRIPT_ID, PAGE_SCRIPT_ID } from "../../vite-plugin-scripts/index.js";
|
|
14
14
|
import { call as callEndpoint } from "../endpoint/index.js";
|
|
15
15
|
import { debug, info } from "../logger/core.js";
|
|
16
|
-
import {
|
|
16
|
+
import { createEnvironment, createRenderContext, renderPage } from "../render/index.js";
|
|
17
17
|
import { callGetStaticPaths } from "../render/route-cache.js";
|
|
18
18
|
import { createLinkStylesheetElementSet, createModuleScriptsSet } from "../render/ssr-element.js";
|
|
19
19
|
import { createRequest } from "../request.js";
|
|
@@ -234,19 +234,14 @@ async function generatePath(pathname, opts, gopts) {
|
|
|
234
234
|
opts.settings.config.build.format,
|
|
235
235
|
pageData.route.type
|
|
236
236
|
);
|
|
237
|
-
const
|
|
237
|
+
const env = createEnvironment({
|
|
238
238
|
adapterName: void 0,
|
|
239
|
-
links,
|
|
240
239
|
logging,
|
|
241
240
|
markdown: {
|
|
242
241
|
...settings.config.markdown,
|
|
243
242
|
isAstroFlavoredMd: settings.config.legacy.astroFlavoredMarkdown
|
|
244
243
|
},
|
|
245
|
-
mod,
|
|
246
244
|
mode: opts.mode,
|
|
247
|
-
origin,
|
|
248
|
-
pathname,
|
|
249
|
-
scripts,
|
|
250
245
|
renderers,
|
|
251
246
|
async resolve(specifier) {
|
|
252
247
|
const hashedFilePath = internals.entrySpecifierToBundleMap.get(specifier);
|
|
@@ -258,24 +253,31 @@ async function generatePath(pathname, opts, gopts) {
|
|
|
258
253
|
}
|
|
259
254
|
return prependForwardSlash(npath.posix.join(settings.config.base, hashedFilePath));
|
|
260
255
|
},
|
|
261
|
-
request: createRequest({ url, headers: new Headers(), logging, ssr }),
|
|
262
|
-
route: pageData.route,
|
|
263
256
|
routeCache,
|
|
264
257
|
site: settings.config.site ? new URL(settings.config.base, settings.config.site).toString() : settings.config.site,
|
|
265
258
|
ssr,
|
|
266
259
|
streaming: true
|
|
267
|
-
};
|
|
260
|
+
});
|
|
261
|
+
const ctx = createRenderContext({
|
|
262
|
+
origin,
|
|
263
|
+
pathname,
|
|
264
|
+
request: createRequest({ url, headers: new Headers(), logging, ssr }),
|
|
265
|
+
scripts,
|
|
266
|
+
links,
|
|
267
|
+
route: pageData.route
|
|
268
|
+
});
|
|
268
269
|
let body;
|
|
269
270
|
let encoding;
|
|
270
271
|
if (pageData.route.type === "endpoint") {
|
|
271
|
-
const
|
|
272
|
+
const endpointHandler = mod;
|
|
273
|
+
const result = await callEndpoint(endpointHandler, env, ctx);
|
|
272
274
|
if (result.type === "response") {
|
|
273
275
|
throw new Error(`Returning a Response from an endpoint is not supported in SSG mode.`);
|
|
274
276
|
}
|
|
275
277
|
body = result.body;
|
|
276
278
|
encoding = result.encoding;
|
|
277
279
|
} else {
|
|
278
|
-
const response = await
|
|
280
|
+
const response = await renderPage(mod, ctx, env);
|
|
279
281
|
if (response.status !== 200 || !response.body) {
|
|
280
282
|
return;
|
|
281
283
|
}
|
|
@@ -137,7 +137,18 @@ function createRelativeSchema(cmd, fileProtocolRoot) {
|
|
|
137
137
|
serverEntry: z.string().optional().default(ASTRO_CONFIG_DEFAULTS.build.serverEntry)
|
|
138
138
|
}).optional().default({}),
|
|
139
139
|
server: z.preprocess(
|
|
140
|
-
(val) =>
|
|
140
|
+
(val) => {
|
|
141
|
+
if (typeof val === "function") {
|
|
142
|
+
const result = val({ command: cmd === "dev" ? "dev" : "preview" });
|
|
143
|
+
if (val.port)
|
|
144
|
+
result.port = val.port;
|
|
145
|
+
if (val.host)
|
|
146
|
+
result.host = val.host;
|
|
147
|
+
return result;
|
|
148
|
+
} else {
|
|
149
|
+
return val;
|
|
150
|
+
}
|
|
151
|
+
},
|
|
141
152
|
z.object({
|
|
142
153
|
host: z.union([z.string(), z.boolean()]).optional().default(ASTRO_CONFIG_DEFAULTS.server.host),
|
|
143
154
|
port: z.number().optional().default(ASTRO_CONFIG_DEFAULTS.server.port),
|
|
@@ -44,24 +44,23 @@ function loadTSConfig(cwd, resolve = true) {
|
|
|
44
44
|
cwd = cwd ?? process.cwd();
|
|
45
45
|
let config = tsr.tsconfigResolverSync({
|
|
46
46
|
cwd,
|
|
47
|
-
filePath: resolve ? void 0 : cwd
|
|
47
|
+
filePath: resolve ? void 0 : cwd,
|
|
48
|
+
ignoreExtends: !resolve
|
|
48
49
|
});
|
|
49
50
|
if (!resolve && config.reason === "invalid-config" && !existsSync(join(cwd, "tsconfig.json"))) {
|
|
50
51
|
config = { reason: "not-found", path: void 0, exists: false };
|
|
51
|
-
} else {
|
|
52
|
-
return config;
|
|
53
52
|
}
|
|
54
53
|
if (config.reason === "not-found") {
|
|
55
54
|
const jsconfig = tsr.tsconfigResolverSync({
|
|
56
55
|
cwd,
|
|
57
56
|
filePath: resolve ? void 0 : cwd,
|
|
58
|
-
searchName: "jsconfig.json"
|
|
57
|
+
searchName: "jsconfig.json",
|
|
58
|
+
ignoreExtends: !resolve
|
|
59
59
|
});
|
|
60
60
|
if (!resolve && jsconfig.reason === "invalid-config" && !existsSync(join(cwd, "jsconfig.json"))) {
|
|
61
61
|
return { reason: "not-found", path: void 0, exists: false };
|
|
62
|
-
} else {
|
|
63
|
-
return jsconfig;
|
|
64
62
|
}
|
|
63
|
+
return jsconfig;
|
|
65
64
|
}
|
|
66
65
|
return config;
|
|
67
66
|
}
|
package/dist/core/constants.js
CHANGED
package/dist/core/dev/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { SSROptions } from '../../render/dev';
|
|
3
|
-
export declare function call(
|
|
3
|
+
export declare function call(options: SSROptions): Promise<{
|
|
4
4
|
type: "simple";
|
|
5
5
|
body: string;
|
|
6
6
|
encoding?: BufferEncoding | undefined;
|
|
7
|
+
cookies: import("../../cookies/cookies").AstroCookies;
|
|
7
8
|
} | {
|
|
8
9
|
type: "response";
|
|
9
10
|
response: Response;
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createRenderContext } from "../../render/index.js";
|
|
2
2
|
import { call as callEndpoint } from "../index.js";
|
|
3
|
-
async function call(
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
async function call(options) {
|
|
4
|
+
const {
|
|
5
|
+
env,
|
|
6
|
+
preload: [, mod]
|
|
7
|
+
} = options;
|
|
8
|
+
const endpointHandler = mod;
|
|
9
|
+
const ctx = createRenderContext({
|
|
10
|
+
request: options.request,
|
|
11
|
+
origin: options.origin,
|
|
12
|
+
pathname: options.pathname,
|
|
13
|
+
route: options.route
|
|
11
14
|
});
|
|
15
|
+
return await callEndpoint(endpointHandler, env, ctx);
|
|
12
16
|
}
|
|
13
17
|
export {
|
|
14
18
|
call
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import type { EndpointHandler } from '../../@types/astro';
|
|
3
|
-
import type {
|
|
4
|
-
|
|
3
|
+
import type { Environment, RenderContext } from '../render/index';
|
|
4
|
+
import { AstroCookies } from '../cookies/index.js';
|
|
5
5
|
declare type EndpointCallResult = {
|
|
6
6
|
type: 'simple';
|
|
7
7
|
body: string;
|
|
8
8
|
encoding?: BufferEncoding;
|
|
9
|
+
cookies: AstroCookies;
|
|
9
10
|
} | {
|
|
10
11
|
type: 'response';
|
|
11
12
|
response: Response;
|
|
12
13
|
};
|
|
13
|
-
export declare function call(mod: EndpointHandler,
|
|
14
|
+
export declare function call(mod: EndpointHandler, env: Environment, ctx: RenderContext): Promise<EndpointCallResult>;
|
|
14
15
|
export {};
|
|
@@ -42,22 +42,29 @@ function createAPIContext({
|
|
|
42
42
|
}
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
|
-
async function call(mod,
|
|
46
|
-
const paramsAndPropsResp = await getParamsAndProps({
|
|
45
|
+
async function call(mod, env, ctx) {
|
|
46
|
+
const paramsAndPropsResp = await getParamsAndProps({
|
|
47
|
+
mod,
|
|
48
|
+
route: ctx.route,
|
|
49
|
+
routeCache: env.routeCache,
|
|
50
|
+
pathname: ctx.pathname,
|
|
51
|
+
logging: env.logging,
|
|
52
|
+
ssr: env.ssr
|
|
53
|
+
});
|
|
47
54
|
if (paramsAndPropsResp === GetParamsAndPropsError.NoMatchingStaticPath) {
|
|
48
55
|
throw new Error(
|
|
49
|
-
`[getStaticPath] route pattern matched, but no matching static path found. (${
|
|
56
|
+
`[getStaticPath] route pattern matched, but no matching static path found. (${ctx.pathname})`
|
|
50
57
|
);
|
|
51
58
|
}
|
|
52
59
|
const [params, props] = paramsAndPropsResp;
|
|
53
60
|
const context = createAPIContext({
|
|
54
|
-
request:
|
|
61
|
+
request: ctx.request,
|
|
55
62
|
params,
|
|
56
63
|
props,
|
|
57
|
-
site:
|
|
58
|
-
adapterName:
|
|
64
|
+
site: env.site,
|
|
65
|
+
adapterName: env.adapterName
|
|
59
66
|
});
|
|
60
|
-
const response = await renderEndpoint(mod, context,
|
|
67
|
+
const response = await renderEndpoint(mod, context, env.ssr);
|
|
61
68
|
if (response instanceof Response) {
|
|
62
69
|
attachToResponse(response, context.cookies);
|
|
63
70
|
return {
|
|
@@ -68,7 +75,8 @@ async function call(mod, opts) {
|
|
|
68
75
|
return {
|
|
69
76
|
type: "simple",
|
|
70
77
|
body: response.body,
|
|
71
|
-
encoding: response.encoding
|
|
78
|
+
encoding: response.encoding,
|
|
79
|
+
cookies: context.cookies
|
|
72
80
|
};
|
|
73
81
|
}
|
|
74
82
|
export {
|
package/dist/core/messages.js
CHANGED
|
@@ -47,7 +47,7 @@ function serverStart({
|
|
|
47
47
|
site,
|
|
48
48
|
isRestart = false
|
|
49
49
|
}) {
|
|
50
|
-
const version = "1.5.
|
|
50
|
+
const version = "1.5.1";
|
|
51
51
|
const rootPath = site ? site.pathname : "/";
|
|
52
52
|
const localPrefix = `${dim("\u2503")} Local `;
|
|
53
53
|
const networkPrefix = `${dim("\u2503")} Network `;
|
|
@@ -250,7 +250,7 @@ function printHelp({
|
|
|
250
250
|
message.push(
|
|
251
251
|
linebreak(),
|
|
252
252
|
` ${bgGreen(black(` ${commandName} `))} ${green(
|
|
253
|
-
`v${"1.5.
|
|
253
|
+
`v${"1.5.1"}`
|
|
254
254
|
)} ${headline}`
|
|
255
255
|
);
|
|
256
256
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { RouteData, SSRElement } from '../../@types/astro';
|
|
2
|
+
/**
|
|
3
|
+
* The RenderContext represents the parts of rendering that are specific to one request.
|
|
4
|
+
*/
|
|
5
|
+
export interface RenderContext {
|
|
6
|
+
request: Request;
|
|
7
|
+
origin: string;
|
|
8
|
+
pathname: string;
|
|
9
|
+
url: URL;
|
|
10
|
+
scripts?: Set<SSRElement>;
|
|
11
|
+
links?: Set<SSRElement>;
|
|
12
|
+
styles?: Set<SSRElement>;
|
|
13
|
+
route?: RouteData;
|
|
14
|
+
status?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare type CreateRenderContextArgs = Partial<RenderContext> & {
|
|
17
|
+
origin?: string;
|
|
18
|
+
request: RenderContext['request'];
|
|
19
|
+
};
|
|
20
|
+
export declare function createRenderContext(options: CreateRenderContextArgs): RenderContext;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function createRenderContext(options) {
|
|
2
|
+
const request = options.request;
|
|
3
|
+
const url = new URL(request.url);
|
|
4
|
+
const origin = options.origin ?? url.origin;
|
|
5
|
+
const pathname = options.pathname ?? url.pathname;
|
|
6
|
+
return {
|
|
7
|
+
...options,
|
|
8
|
+
origin,
|
|
9
|
+
pathname,
|
|
10
|
+
url
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export {
|
|
14
|
+
createRenderContext
|
|
15
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { ComponentInstance, Params, Props, RouteData, RuntimeMode, SSRElement, SSRLoadedRenderer } from '../../@types/astro';
|
|
1
|
+
import type { ComponentInstance, Params, Props, RouteData } from '../../@types/astro';
|
|
3
2
|
import type { LogOptions } from '../logger/core.js';
|
|
3
|
+
import type { RenderContext } from './context.js';
|
|
4
|
+
import type { Environment } from './environment.js';
|
|
4
5
|
import { RouteCache } from './route-cache.js';
|
|
5
6
|
interface GetParamsAndPropsOptions {
|
|
6
7
|
mod: ComponentInstance;
|
|
@@ -14,26 +15,5 @@ export declare const enum GetParamsAndPropsError {
|
|
|
14
15
|
NoMatchingStaticPath = 0
|
|
15
16
|
}
|
|
16
17
|
export declare function getParamsAndProps(opts: GetParamsAndPropsOptions): Promise<[Params, Props] | GetParamsAndPropsError>;
|
|
17
|
-
export
|
|
18
|
-
adapterName?: string;
|
|
19
|
-
logging: LogOptions;
|
|
20
|
-
links: Set<SSRElement>;
|
|
21
|
-
styles?: Set<SSRElement>;
|
|
22
|
-
markdown: MarkdownRenderingOptions;
|
|
23
|
-
mod: ComponentInstance;
|
|
24
|
-
mode: RuntimeMode;
|
|
25
|
-
origin: string;
|
|
26
|
-
pathname: string;
|
|
27
|
-
scripts: Set<SSRElement>;
|
|
28
|
-
resolve: (s: string) => Promise<string>;
|
|
29
|
-
renderers: SSRLoadedRenderer[];
|
|
30
|
-
route?: RouteData;
|
|
31
|
-
routeCache: RouteCache;
|
|
32
|
-
site?: string;
|
|
33
|
-
ssr: boolean;
|
|
34
|
-
streaming: boolean;
|
|
35
|
-
request: Request;
|
|
36
|
-
status?: number;
|
|
37
|
-
}
|
|
38
|
-
export declare function render(opts: RenderOptions): Promise<Response>;
|
|
18
|
+
export declare function renderPage(mod: ComponentInstance, ctx: RenderContext, env: Environment): Promise<Response>;
|
|
39
19
|
export {};
|
package/dist/core/render/core.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fragment, renderPage } from "../../runtime/server/index.js";
|
|
1
|
+
import { Fragment, renderPage as runtimeRenderPage } from "../../runtime/server/index.js";
|
|
2
2
|
import { attachToResponse } from "../cookies/index.js";
|
|
3
3
|
import { getParams } from "../routing/params.js";
|
|
4
4
|
import { createResult } from "./result.js";
|
|
@@ -33,63 +33,42 @@ async function getParamsAndProps(opts) {
|
|
|
33
33
|
}
|
|
34
34
|
return [params, pageProps];
|
|
35
35
|
}
|
|
36
|
-
async function
|
|
37
|
-
const {
|
|
38
|
-
adapterName,
|
|
39
|
-
links,
|
|
40
|
-
styles,
|
|
41
|
-
logging,
|
|
42
|
-
origin,
|
|
43
|
-
markdown,
|
|
44
|
-
mod,
|
|
45
|
-
mode,
|
|
46
|
-
pathname,
|
|
47
|
-
scripts,
|
|
48
|
-
renderers,
|
|
49
|
-
request,
|
|
50
|
-
resolve,
|
|
51
|
-
route,
|
|
52
|
-
routeCache,
|
|
53
|
-
site,
|
|
54
|
-
ssr,
|
|
55
|
-
streaming,
|
|
56
|
-
status = 200
|
|
57
|
-
} = opts;
|
|
36
|
+
async function renderPage(mod, ctx, env) {
|
|
58
37
|
const paramsAndPropsRes = await getParamsAndProps({
|
|
59
|
-
logging,
|
|
38
|
+
logging: env.logging,
|
|
60
39
|
mod,
|
|
61
|
-
route,
|
|
62
|
-
routeCache,
|
|
63
|
-
pathname,
|
|
64
|
-
ssr
|
|
40
|
+
route: ctx.route,
|
|
41
|
+
routeCache: env.routeCache,
|
|
42
|
+
pathname: ctx.pathname,
|
|
43
|
+
ssr: env.ssr
|
|
65
44
|
});
|
|
66
45
|
if (paramsAndPropsRes === 0 /* NoMatchingStaticPath */) {
|
|
67
46
|
throw new Error(
|
|
68
|
-
`[getStaticPath] route pattern matched, but no matching static path found. (${pathname})`
|
|
47
|
+
`[getStaticPath] route pattern matched, but no matching static path found. (${ctx.pathname})`
|
|
69
48
|
);
|
|
70
49
|
}
|
|
71
50
|
const [params, pageProps] = paramsAndPropsRes;
|
|
72
|
-
const Component =
|
|
51
|
+
const Component = mod.default;
|
|
73
52
|
if (!Component)
|
|
74
53
|
throw new Error(`Expected an exported Astro component but received typeof ${typeof Component}`);
|
|
75
54
|
const result = createResult({
|
|
76
|
-
adapterName,
|
|
77
|
-
links,
|
|
78
|
-
styles,
|
|
79
|
-
logging,
|
|
80
|
-
markdown,
|
|
81
|
-
mode,
|
|
82
|
-
origin,
|
|
55
|
+
adapterName: env.adapterName,
|
|
56
|
+
links: ctx.links,
|
|
57
|
+
styles: ctx.styles,
|
|
58
|
+
logging: env.logging,
|
|
59
|
+
markdown: env.markdown,
|
|
60
|
+
mode: env.mode,
|
|
61
|
+
origin: ctx.origin,
|
|
83
62
|
params,
|
|
84
63
|
props: pageProps,
|
|
85
|
-
pathname,
|
|
86
|
-
resolve,
|
|
87
|
-
renderers,
|
|
88
|
-
request,
|
|
89
|
-
site,
|
|
90
|
-
scripts,
|
|
91
|
-
ssr,
|
|
92
|
-
status
|
|
64
|
+
pathname: ctx.pathname,
|
|
65
|
+
resolve: env.resolve,
|
|
66
|
+
renderers: env.renderers,
|
|
67
|
+
request: ctx.request,
|
|
68
|
+
site: env.site,
|
|
69
|
+
scripts: ctx.scripts,
|
|
70
|
+
ssr: env.ssr,
|
|
71
|
+
status: ctx.status ?? 200
|
|
93
72
|
});
|
|
94
73
|
if (typeof mod.components === "object") {
|
|
95
74
|
Object.assign(pageProps, { components: mod.components });
|
|
@@ -99,7 +78,7 @@ async function render(opts) {
|
|
|
99
78
|
components: Object.assign((pageProps == null ? void 0 : pageProps.components) ?? {}, { Fragment })
|
|
100
79
|
});
|
|
101
80
|
}
|
|
102
|
-
const response = await
|
|
81
|
+
const response = await runtimeRenderPage(result, Component, pageProps, null, env.streaming);
|
|
103
82
|
if (result.cookies) {
|
|
104
83
|
attachToResponse(response, result.cookies);
|
|
105
84
|
}
|
|
@@ -108,5 +87,5 @@ async function render(opts) {
|
|
|
108
87
|
export {
|
|
109
88
|
GetParamsAndPropsError,
|
|
110
89
|
getParamsAndProps,
|
|
111
|
-
|
|
90
|
+
renderPage
|
|
112
91
|
};
|