@solidjs/start 0.4.0-alpha.3 → 0.4.0-alpha.4
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/package.json +1 -1
- package/server/page-event.tsx +37 -1
- package/shared/HttpHeader.tsx +1 -21
- package/shared/HttpStatusCode.tsx +2 -6
package/package.json
CHANGED
package/server/page-event.tsx
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
appendResponseHeader,
|
|
3
|
+
getCookie,
|
|
4
|
+
getResponseHeader,
|
|
5
|
+
removeResponseHeader,
|
|
6
|
+
setCookie,
|
|
7
|
+
setResponseHeader,
|
|
8
|
+
setResponseStatus
|
|
9
|
+
} from "vinxi/server";
|
|
2
10
|
import { createRoutes } from "../shared/FileRoutes";
|
|
3
11
|
import { FetchEvent, PageEvent } from "./types";
|
|
4
12
|
|
|
@@ -32,6 +40,34 @@ export async function createPageEvent(ctx: FetchEvent) {
|
|
|
32
40
|
],
|
|
33
41
|
initialSubmission: initFromFlash(ctx),
|
|
34
42
|
routes: createRoutes(),
|
|
43
|
+
components: {
|
|
44
|
+
status: props => {
|
|
45
|
+
setResponseStatus(ctx, props.code, props.text);
|
|
46
|
+
return () => setResponseStatus(ctx, 200);
|
|
47
|
+
},
|
|
48
|
+
header: props => {
|
|
49
|
+
if (props.append) {
|
|
50
|
+
appendResponseHeader(ctx, props.name, props.value);
|
|
51
|
+
} else {
|
|
52
|
+
setResponseHeader(ctx, props.name, props.value);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return () => {
|
|
56
|
+
const value = getResponseHeader(ctx, props.name);
|
|
57
|
+
|
|
58
|
+
// Todo: review this logic still the same in H3
|
|
59
|
+
// H3 supports arrays so its possible there is no need to split..
|
|
60
|
+
// typeof check here is to guard but ultimately may be unneeded
|
|
61
|
+
if (value && typeof value === "string") {
|
|
62
|
+
const values = value.split(", ");
|
|
63
|
+
const index = values.indexOf(props.value);
|
|
64
|
+
index !== -1 && values.splice(index, 1);
|
|
65
|
+
if (values.length) setResponseHeader(ctx, props.name, values.join(", "));
|
|
66
|
+
else removeResponseHeader(ctx, props.name);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
},
|
|
35
71
|
// prevUrl: prevPath || "",
|
|
36
72
|
// mutation: mutation,
|
|
37
73
|
// $type: FETCH_EVENT,
|
package/shared/HttpHeader.tsx
CHANGED
|
@@ -1,30 +1,10 @@
|
|
|
1
1
|
import { onCleanup } from "solid-js";
|
|
2
2
|
import { getRequestEvent, isServer } from "solid-js/web";
|
|
3
|
-
import { appendResponseHeader, getResponseHeader, removeResponseHeader, setResponseHeader } from "vinxi/server";
|
|
4
3
|
|
|
5
4
|
export function HttpHeader(props: { name: string; value: string; append?: boolean }) {
|
|
6
5
|
if (isServer) {
|
|
7
6
|
const event = getRequestEvent();
|
|
8
|
-
if (props
|
|
9
|
-
appendResponseHeader(event, props.name, props.value);
|
|
10
|
-
} else {
|
|
11
|
-
setResponseHeader(event, props.name, props.value);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
onCleanup(() => {
|
|
15
|
-
const value = getResponseHeader(event, props.name);
|
|
16
|
-
|
|
17
|
-
// Todo: review this logic still the same in H3
|
|
18
|
-
// H3 supports arrays so its possible there is no need to split..
|
|
19
|
-
// typeof check here is to guard but ultimately may be unneeded
|
|
20
|
-
if (value && typeof value === "string") {
|
|
21
|
-
const values = value.split(", ");
|
|
22
|
-
const index = values.indexOf(props.value);
|
|
23
|
-
index !== -1 && values.splice(index, 1);
|
|
24
|
-
if (values.length) setResponseHeader(event, props.name, values.join(", "));
|
|
25
|
-
else removeResponseHeader(event, props.name);
|
|
26
|
-
}
|
|
27
|
-
});
|
|
7
|
+
if (event) onCleanup((event as any).components.header(props));
|
|
28
8
|
}
|
|
29
9
|
|
|
30
10
|
return null;
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { onCleanup } from "solid-js";
|
|
2
2
|
import { getRequestEvent, isServer } from "solid-js/web";
|
|
3
|
-
import { setResponseStatus } from "vinxi/server";
|
|
4
3
|
|
|
5
4
|
export function HttpStatusCode(props: { code: number, text?: string }) {
|
|
6
5
|
if (isServer) {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
onCleanup(() => {
|
|
10
|
-
setResponseStatus(context, 200);
|
|
11
|
-
});
|
|
6
|
+
const event = getRequestEvent();
|
|
7
|
+
if (event) onCleanup((event as any).components.status(props));
|
|
12
8
|
}
|
|
13
9
|
return null;
|
|
14
10
|
}
|