@solidjs/start 0.4.0-alpha.2 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidjs/start",
3
- "version": "0.4.0-alpha.2",
3
+ "version": "0.4.0-alpha.4",
4
4
  "type": "module",
5
5
  "author": "Ryan Carniato",
6
6
  "publishConfig": {
@@ -13,7 +13,7 @@
13
13
  "shared",
14
14
  "*.d.ts"
15
15
  ],
16
- "types": "./index.tsx",
16
+ "types": "./shared/index.tsx",
17
17
  "exports": {
18
18
  ".": "./shared/index.tsx",
19
19
  "./config": "./config/index.js",
@@ -1,4 +1,12 @@
1
- import { getCookie, setCookie, setResponseHeader } from "vinxi/server";
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,
@@ -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.append) {
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 context = getRequestEvent()!;
8
- setResponseStatus(context, props.code, props.text);
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
  }