@better-agnostic/handler-next 0.0.2

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.
@@ -0,0 +1,18 @@
1
+ import { type DispatchableEngine } from "@better-agnostic/handler";
2
+ import type { NextRequest } from "next/server";
3
+ export interface NextHandlerOptions<TEngine, TAuth = unknown> {
4
+ basePath?: string;
5
+ getAuthContext?: (req: NextRequest) => Promise<TAuth | null> | TAuth | null;
6
+ requireAuth?: boolean;
7
+ }
8
+ export declare function createNextHandler<TEngine extends DispatchableEngine, TAuth = unknown>(engine: TEngine, options?: NextHandlerOptions<TEngine, TAuth>): {
9
+ GET: (req: NextRequest, _context?: {
10
+ params?: Promise<{
11
+ slug?: string[];
12
+ }>;
13
+ }) => Promise<Response>;
14
+ POST: (req: NextRequest) => Promise<Response>;
15
+ PATCH: (req: NextRequest) => Promise<Response>;
16
+ DELETE: (req: NextRequest) => Promise<Response>;
17
+ };
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,kBAAkB,EAGxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,kBAAkB,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAsED,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,kBAAkB,EAAE,KAAK,GAAG,OAAO,EACnF,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC;eAK/B,WAAW,aAAa;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE;gBAEhE,WAAW;iBACV,WAAW;kBACV,WAAW;EAE5B"}
package/dist/index.js ADDED
@@ -0,0 +1,61 @@
1
+ import { dispatch, parseJsonBody, } from "@better-agnostic/handler";
2
+ async function toCoreRequest(req, options) {
3
+ const url = req.nextUrl ?? new URL(req.url);
4
+ const path = url.pathname;
5
+ const query = {};
6
+ url.searchParams.forEach((v, k) => {
7
+ query[k] = v;
8
+ });
9
+ let body = null;
10
+ if (req.method === "POST" || req.method === "PATCH") {
11
+ body = parseJsonBody(await req.text());
12
+ }
13
+ const coreReq = {
14
+ method: req.method ?? "GET",
15
+ path,
16
+ params: {},
17
+ query,
18
+ body,
19
+ };
20
+ if (options?.getAuthContext) {
21
+ const auth = await Promise.resolve(options.getAuthContext(req));
22
+ if (auth != null) {
23
+ coreReq.auth = auth;
24
+ }
25
+ }
26
+ return coreReq;
27
+ }
28
+ function toNextResponse(status, body, options) {
29
+ if (options?.stream) {
30
+ return new Response(options.stream, {
31
+ status,
32
+ headers: options.headers,
33
+ });
34
+ }
35
+ if (status === 204) {
36
+ return new Response(null, { status: 204 });
37
+ }
38
+ return Response.json(body ?? null, { status });
39
+ }
40
+ async function handle(engine, req, options) {
41
+ const basePath = options.basePath ?? "";
42
+ const coreReq = await toCoreRequest(req, options);
43
+ if (options.requireAuth && options.getAuthContext && coreReq.auth == null) {
44
+ return new Response(null, { status: 401 });
45
+ }
46
+ const coreRes = await dispatch(engine, coreReq, basePath);
47
+ return toNextResponse(coreRes.status, coreRes.body, {
48
+ stream: coreRes.stream,
49
+ headers: coreRes.headers,
50
+ });
51
+ }
52
+ export function createNextHandler(engine, options) {
53
+ const opts = options ?? {};
54
+ return {
55
+ GET: (req, _context) => handle(engine, req, opts),
56
+ POST: (req) => handle(engine, req, opts),
57
+ PATCH: (req) => handle(engine, req, opts),
58
+ DELETE: (req) => handle(engine, req, opts),
59
+ };
60
+ }
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@better-agnostic/handler-next",
3
+ "version": "0.0.2",
4
+ "description": "Next.js handler for better-agnostic libraries",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/elydelva/better-agnostic",
9
+ "directory": "packages/handler-next"
10
+ },
11
+ "keywords": ["nextjs", "handler", "better-agnostic"],
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "type": "module",
16
+ "main": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js",
22
+ "default": "./dist/index.js"
23
+ }
24
+ },
25
+ "scripts": {
26
+ "build": "tsc"
27
+ },
28
+ "dependencies": {
29
+ "@better-agnostic/handler": "workspace:*"
30
+ },
31
+ "peerDependencies": {
32
+ "next": ">=14.0.0"
33
+ },
34
+ "devDependencies": {
35
+ "next": "^15.0.0",
36
+ "typescript": "^5.7.0"
37
+ },
38
+ "files": ["dist"]
39
+ }