Skip to content

Commit

Permalink
refactor: type adapters
Browse files Browse the repository at this point in the history
  • Loading branch information
mxsdev authored Jan 17, 2024
1 parent 8f9c994 commit 54288fb
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 7 deletions.
3 changes: 2 additions & 1 deletion src/adapters/node.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import http from "node:http"
import { transformToNodeBuilder } from "src/edge-runtime/transform-to-node"
import { EdgeSpecAdapter } from "src/types/edge-spec"
import { EdgeSpecRequest } from "src/types/web-handler"

export const startServer = (edgeSpec: any, port?: number) => {
export const startServer: EdgeSpecAdapter = (edgeSpec, port) => {
const transformToNode = transformToNodeBuilder({
defaultOrigin: `http://localhost${port ? `:${port}` : ""}`,
})
Expand Down
3 changes: 2 additions & 1 deletion src/adapters/wintercg-minimal.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { EdgeSpecAdapter } from "src/types/edge-spec"
import { EdgeSpecFetchEvent } from "src/types/web-handler"

export const addFetchListener = (edgeSpec: any) => {
export const addFetchListener: EdgeSpecAdapter = (edgeSpec) => {
addEventListener("fetch", async (event) => {
// TODO: find a better way to cast this
const fetchEvent = event as unknown as EdgeSpecFetchEvent
Expand Down
18 changes: 18 additions & 0 deletions src/types/edge-spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import type { EdgeSpecRouteFn, EdgeSpecRouteParams } from "./web-handler"

export type EdgeSpecRouteMatcher = (pathname: string) => {
matchedRoute: string
routeParams: EdgeSpecRouteParams
}

export interface EdgeSpec {
routeMatcher: EdgeSpecRouteMatcher
routeMapWithHandlers: {
[route: string]: EdgeSpecRouteFn
}
}

export type EdgeSpecAdapter<ReturnValue = void> = (
edgeSpec: EdgeSpec,
port?: number
) => ReturnValue
9 changes: 4 additions & 5 deletions src/types/web-handler.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import type { FetchEvent } from "@edge-runtime/primitives"
import type { RouteMatcherOutput } from "next-route-matcher"

// TODO: this should be exported directly from next-route-matcher
type RouteParams = RouteMatcherOutput["routeParams"]

export type EdgeSpecRouteParams = {
[routeParam: string]: string | string[]
}
export interface EdgeSpecRequestOptions {
pathParams?: RouteParams
pathParams?: EdgeSpecRouteParams
}

export type WithEdgeSpecRequestOptions<T> = T & EdgeSpecRequestOptions
Expand Down

0 comments on commit 54288fb

Please sign in to comment.