@danceroutine/tango-adapters-next 0.1.0
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/dist/adapter/NextAdapter.d.ts +13 -0
- package/dist/adapter/NextAdapter.js +31 -0
- package/dist/adapter/index.d.ts +4 -0
- package/dist/adapter/index.js +4 -0
- package/dist/adapter-BtnGpM5G.js +47 -0
- package/dist/adapter-BtnGpM5G.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +3 -0
- package/package.json +54 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { NextRequest } from 'next/server';
|
|
2
|
+
import { NextResponse } from 'next/server';
|
|
3
|
+
import { RequestContext } from '@danceroutine/tango-resources';
|
|
4
|
+
import type { FrameworkAdapter, FrameworkAdapterOptions } from '@danceroutine/tango-adapters-core/adapter';
|
|
5
|
+
export type NextRouteHandler = (request: NextRequest, context: {
|
|
6
|
+
params?: Promise<Record<string, string>>;
|
|
7
|
+
}) => Promise<NextResponse>;
|
|
8
|
+
export interface AdaptNextOptions extends FrameworkAdapterOptions<NextRequest> {
|
|
9
|
+
}
|
|
10
|
+
export declare class NextAdapter implements FrameworkAdapter<NextResponse, NextRouteHandler, NextRequest> {
|
|
11
|
+
adapt(handler: (ctx: RequestContext, ...args: unknown[]) => Promise<NextResponse>, options?: AdaptNextOptions): NextRouteHandler;
|
|
12
|
+
private createHandler;
|
|
13
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
import { RequestContext } from '@danceroutine/tango-resources';
|
|
3
|
+
export class NextAdapter {
|
|
4
|
+
adapt(handler, options = {}) {
|
|
5
|
+
return this.createHandler(handler, options);
|
|
6
|
+
}
|
|
7
|
+
createHandler(handler, options) {
|
|
8
|
+
return async (request, routeContext) => {
|
|
9
|
+
try {
|
|
10
|
+
const user = options.getUser ? await options.getUser(request) : null;
|
|
11
|
+
const params = routeContext?.params ? await routeContext.params : undefined;
|
|
12
|
+
const ctx = RequestContext.create(request, user);
|
|
13
|
+
if (params) {
|
|
14
|
+
ctx.params = params;
|
|
15
|
+
}
|
|
16
|
+
const id = params?.id;
|
|
17
|
+
if (id && handler.length > 1) {
|
|
18
|
+
return await handler(ctx, id);
|
|
19
|
+
}
|
|
20
|
+
return await handler(ctx);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error('Adapter error:', error);
|
|
24
|
+
return new NextResponse(JSON.stringify({ error: 'Internal Server Error' }), {
|
|
25
|
+
status: 500,
|
|
26
|
+
headers: { 'Content-Type': 'application/json' },
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { NextResponse } from "next/server";
|
|
2
|
+
import { RequestContext } from "@danceroutine/tango-resources";
|
|
3
|
+
|
|
4
|
+
//#region rolldown:runtime
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all) __defProp(target, name, {
|
|
8
|
+
get: all[name],
|
|
9
|
+
enumerable: true
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region src/adapter/NextAdapter.ts
|
|
15
|
+
var NextAdapter = class {
|
|
16
|
+
adapt(handler, options = {}) {
|
|
17
|
+
return this.createHandler(handler, options);
|
|
18
|
+
}
|
|
19
|
+
createHandler(handler, options) {
|
|
20
|
+
return async (request, routeContext) => {
|
|
21
|
+
try {
|
|
22
|
+
const user = options.getUser ? await options.getUser(request) : null;
|
|
23
|
+
const params = routeContext?.params ? await routeContext.params : undefined;
|
|
24
|
+
const ctx = RequestContext.create(request, user);
|
|
25
|
+
if (params) ctx.params = params;
|
|
26
|
+
const id = params?.id;
|
|
27
|
+
if (id && handler.length > 1) return await handler(ctx, id);
|
|
28
|
+
return await handler(ctx);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
console.error("Adapter error:", error);
|
|
31
|
+
return new NextResponse(JSON.stringify({ error: "Internal Server Error" }), {
|
|
32
|
+
status: 500,
|
|
33
|
+
headers: { "Content-Type": "application/json" }
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region src/adapter/index.ts
|
|
42
|
+
var adapter_exports = {};
|
|
43
|
+
__export(adapter_exports, { NextAdapter: () => NextAdapter });
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
export { NextAdapter, adapter_exports };
|
|
47
|
+
//# sourceMappingURL=adapter-BtnGpM5G.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-BtnGpM5G.js","names":["handler: (ctx: RequestContext, ...args: unknown[]) => Promise<NextResponse>","options: AdaptNextOptions","request: NextRequest"],"sources":["../src/adapter/NextAdapter.ts","../src/adapter/index.ts"],"sourcesContent":["import type { NextRequest } from 'next/server';\nimport { NextResponse } from 'next/server';\nimport { RequestContext } from '@danceroutine/tango-resources';\nimport type { FrameworkAdapter, FrameworkAdapterOptions } from '@danceroutine/tango-adapters-core/adapter';\n\nexport type NextRouteHandler = (\n request: NextRequest,\n context: { params?: Promise<Record<string, string>> }\n) => Promise<NextResponse>;\n\nexport interface AdaptNextOptions extends FrameworkAdapterOptions<NextRequest> {}\n\nexport class NextAdapter implements FrameworkAdapter<NextResponse, NextRouteHandler, NextRequest> {\n adapt(\n handler: (ctx: RequestContext, ...args: unknown[]) => Promise<NextResponse>,\n options: AdaptNextOptions = {}\n ): NextRouteHandler {\n return this.createHandler(handler, options);\n }\n\n private createHandler(\n handler: (ctx: RequestContext, ...args: unknown[]) => Promise<NextResponse>,\n options: AdaptNextOptions\n ): NextRouteHandler {\n return async (request: NextRequest, routeContext) => {\n try {\n const user = options.getUser ? await options.getUser(request) : null;\n\n const params = routeContext?.params ? await routeContext.params : undefined;\n\n const ctx = RequestContext.create(request, user);\n if (params) {\n ctx.params = params;\n }\n\n const id = params?.id;\n if (id && handler.length > 1) {\n return await handler(ctx, id);\n }\n\n return await handler(ctx);\n } catch (error) {\n console.error('Adapter error:', error);\n return new NextResponse(JSON.stringify({ error: 'Internal Server Error' }), {\n status: 500,\n headers: { 'Content-Type': 'application/json' },\n });\n }\n };\n }\n}\n","/**\n * Domain boundary barrel: centralizes this subdomain's public contract.\n */\n\nexport { NextAdapter, type AdaptNextOptions, type NextRouteHandler } from './NextAdapter';\n"],"mappings":";;;;;;;;;;;;;;IAYa,cAAN,MAA2F;CAC9F,MACIA,SACAC,UAA4B,CAAE,GACd;AAChB,SAAO,KAAK,cAAc,SAAS,QAAQ;CAC9C;CAED,cACID,SACAC,SACgB;AAChB,SAAO,OAAOC,SAAsB,iBAAiB;AACjD,OAAI;IACA,MAAM,OAAO,QAAQ,UAAU,MAAM,QAAQ,QAAQ,QAAQ,GAAG;IAEhE,MAAM,SAAS,cAAc,SAAS,MAAM,aAAa,SAAS;IAElE,MAAM,MAAM,eAAe,OAAO,SAAS,KAAK;AAChD,QAAI,OACA,KAAI,SAAS;IAGjB,MAAM,KAAK,QAAQ;AACnB,QAAI,MAAM,QAAQ,SAAS,EACvB,QAAO,MAAM,QAAQ,KAAK,GAAG;AAGjC,WAAO,MAAM,QAAQ,IAAI;GAC5B,SAAQ,OAAO;AACZ,YAAQ,MAAM,kBAAkB,MAAM;AACtC,WAAO,IAAI,aAAa,KAAK,UAAU,EAAE,OAAO,wBAAyB,EAAC,EAAE;KACxE,QAAQ;KACR,SAAS,EAAE,gBAAgB,mBAAoB;IAClD;GACJ;EACJ;CACJ;AACJ"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundled exports for Django-style domain drill-down imports, plus curated
|
|
3
|
+
* top-level symbols for TS-native ergonomic imports.
|
|
4
|
+
*/
|
|
5
|
+
export * as adapter from './adapter/index';
|
|
6
|
+
export { NextAdapter, type AdaptNextOptions, type NextRouteHandler } from './adapter/index';
|
package/dist/index.js
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@danceroutine/tango-adapters-next",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Next.js App Router adapter for Tango viewsets",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./adapter": {
|
|
14
|
+
"types": "./dist/adapter/index.d.ts",
|
|
15
|
+
"import": "./dist/adapter/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsdown",
|
|
23
|
+
"test": "vitest run --coverage",
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"typecheck": "tsc --noEmit"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"tango",
|
|
29
|
+
"next",
|
|
30
|
+
"nextjs",
|
|
31
|
+
"adapter"
|
|
32
|
+
],
|
|
33
|
+
"author": "Pedro Del Moral Lopez",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/danceroutine/tango.git",
|
|
38
|
+
"directory": "packages/adapters/next"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@danceroutine/tango-resources": "workspace:*",
|
|
42
|
+
"@danceroutine/tango-adapters-core": "workspace:*"
|
|
43
|
+
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"next": "^15.0.0"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@types/node": "^22.9.0",
|
|
49
|
+
"next": "^15.0.3",
|
|
50
|
+
"tsdown": "^0.4.0",
|
|
51
|
+
"typescript": "^5.6.3",
|
|
52
|
+
"vitest": "^4.0.6"
|
|
53
|
+
}
|
|
54
|
+
}
|