@zenstackhq/server 2.19.2 → 2.20.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenstackhq/server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.20.0",
|
|
4
4
|
"displayName": "ZenStack Server-side Adapters",
|
|
5
5
|
"description": "ZenStack server-side adapters",
|
|
6
6
|
"homepage": "https://zenstack.dev",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
"nextjs",
|
|
15
15
|
"sveltekit",
|
|
16
16
|
"nuxtjs",
|
|
17
|
-
"elysia"
|
|
17
|
+
"elysia",
|
|
18
|
+
"tanstack-start"
|
|
18
19
|
],
|
|
19
20
|
"author": "ZenStack Team",
|
|
20
21
|
"license": "MIT",
|
|
@@ -23,7 +24,7 @@
|
|
|
23
24
|
"ts-japi": "^1.10.1",
|
|
24
25
|
"url-pattern": "^1.0.3",
|
|
25
26
|
"decimal.js": "^10.4.2",
|
|
26
|
-
"@zenstackhq/runtime": "2.
|
|
27
|
+
"@zenstackhq/runtime": "2.20.0"
|
|
27
28
|
},
|
|
28
29
|
"peerDependencies": {
|
|
29
30
|
"zod": "^3.25.0 || ^4.0.0"
|
|
@@ -49,7 +50,7 @@
|
|
|
49
50
|
"reflect-metadata": "^0.2.2",
|
|
50
51
|
"supertest": "^6.3.3",
|
|
51
52
|
"zod": "^3.25.0",
|
|
52
|
-
"@zenstackhq/testtools": "2.
|
|
53
|
+
"@zenstackhq/testtools": "2.20.0"
|
|
53
54
|
},
|
|
54
55
|
"exports": {
|
|
55
56
|
"./package.json": "./package.json",
|
|
@@ -66,6 +67,7 @@
|
|
|
66
67
|
"./nestjs": "./nestjs/index.js",
|
|
67
68
|
"./hono": "./hono/index.js",
|
|
68
69
|
"./elysia": "./elysia/index.js",
|
|
70
|
+
"./tanstack-start": "./tanstack-start/index.js",
|
|
69
71
|
"./types": "./types.js"
|
|
70
72
|
},
|
|
71
73
|
"scripts": {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TanStackStartOptions } from '.';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a TanStack Start server route handler which encapsulates Prisma CRUD operations.
|
|
4
|
+
*
|
|
5
|
+
* @param options Options for initialization
|
|
6
|
+
* @returns A TanStack Start server route handler
|
|
7
|
+
*/
|
|
8
|
+
export default function factory(options: TanStackStartOptions): ({ request, params }: {
|
|
9
|
+
request: Request;
|
|
10
|
+
params: Record<string, string>;
|
|
11
|
+
}) => Promise<Response>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.default = factory;
|
|
5
|
+
const api_1 = require("../api");
|
|
6
|
+
const shared_1 = require("../shared");
|
|
7
|
+
/**
|
|
8
|
+
* Creates a TanStack Start server route handler which encapsulates Prisma CRUD operations.
|
|
9
|
+
*
|
|
10
|
+
* @param options Options for initialization
|
|
11
|
+
* @returns A TanStack Start server route handler
|
|
12
|
+
*/
|
|
13
|
+
function factory(options) {
|
|
14
|
+
const { modelMeta, zodSchemas } = (0, shared_1.loadAssets)(options);
|
|
15
|
+
const requestHandler = options.handler || (0, api_1.RPCApiHandler)();
|
|
16
|
+
return async ({ request, params }) => {
|
|
17
|
+
const prisma = (await options.getPrisma(request, params));
|
|
18
|
+
if (!prisma) {
|
|
19
|
+
return new Response(JSON.stringify({ message: 'unable to get prisma from request context' }), {
|
|
20
|
+
status: 500,
|
|
21
|
+
headers: {
|
|
22
|
+
'Content-Type': 'application/json',
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const url = new URL(request.url);
|
|
27
|
+
const query = Object.fromEntries(url.searchParams);
|
|
28
|
+
// Extract path from params._splat for catch-all routes
|
|
29
|
+
const path = params._splat;
|
|
30
|
+
if (!path) {
|
|
31
|
+
return new Response(JSON.stringify({ message: 'missing path parameter' }), {
|
|
32
|
+
status: 400,
|
|
33
|
+
headers: {
|
|
34
|
+
'Content-Type': 'application/json',
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
let requestBody;
|
|
39
|
+
if (request.body) {
|
|
40
|
+
try {
|
|
41
|
+
requestBody = await request.json();
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// noop
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const r = await requestHandler({
|
|
49
|
+
method: request.method,
|
|
50
|
+
path,
|
|
51
|
+
query,
|
|
52
|
+
requestBody,
|
|
53
|
+
prisma,
|
|
54
|
+
modelMeta,
|
|
55
|
+
zodSchemas,
|
|
56
|
+
logger: options.logger,
|
|
57
|
+
});
|
|
58
|
+
return new Response(JSON.stringify(r.body), {
|
|
59
|
+
status: r.status,
|
|
60
|
+
headers: {
|
|
61
|
+
'Content-Type': 'application/json',
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
return new Response(JSON.stringify({ message: `An unhandled error occurred: ${err}` }), {
|
|
67
|
+
status: 500,
|
|
68
|
+
headers: {
|
|
69
|
+
'Content-Type': 'application/json',
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/tanstack-start/handler.ts"],"names":[],"mappings":";AAAA,6DAA6D;;AAa7D,0BAoEC;AA7ED,gCAAuC;AACvC,sCAAuC;AAEvC;;;;;GAKG;AACH,SAAwB,OAAO,CAC3B,OAA6B;IAE7B,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,IAAI,IAAA,mBAAa,GAAE,CAAC;IAE1D,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAwD,EAAE,EAAE;QACvF,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAqB,CAAC;QAC9E,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,2CAA2C,EAAE,CAAC,EAAE;gBAC1F,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE;oBACL,cAAc,EAAE,kBAAkB;iBACrC;aACJ,CAAC,CAAC;QACP,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEnD,uDAAuD;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QAE3B,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,EAAE;gBACvE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE;oBACL,cAAc,EAAE,kBAAkB;iBACrC;aACJ,CAAC,CAAC;QACP,CAAC;QAED,IAAI,WAAoB,CAAC;QACzB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC;gBACD,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO;YACX,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACD,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC;gBAC3B,MAAM,EAAE,OAAO,CAAC,MAAO;gBACvB,IAAI;gBACJ,KAAK;gBACL,WAAW;gBACX,MAAM;gBACN,SAAS;gBACT,UAAU;gBACV,MAAM,EAAE,OAAO,CAAC,MAAM;aACzB,CAAC,CAAC;YACH,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBACxC,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,OAAO,EAAE;oBACL,cAAc,EAAE,kBAAkB;iBACrC;aACJ,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,gCAAgC,GAAG,EAAE,EAAE,CAAC,EAAE;gBACpF,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE;oBACL,cAAc,EAAE,kBAAkB;iBACrC;aACJ,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AdapterBaseOptions } from '../types';
|
|
2
|
+
import { default as Handler } from './handler';
|
|
3
|
+
/**
|
|
4
|
+
* Options for initializing a TanStack Start server route handler.
|
|
5
|
+
*/
|
|
6
|
+
export interface TanStackStartOptions extends AdapterBaseOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Callback method for getting a Prisma instance for the given request and params.
|
|
9
|
+
*/
|
|
10
|
+
getPrisma: (request: Request, params: Record<string, string>) => Promise<unknown> | unknown;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Creates a TanStack Start server route handler.
|
|
14
|
+
* @see https://zenstack.dev/docs/reference/server-adapters/tanstack-start
|
|
15
|
+
*/
|
|
16
|
+
export declare function TanStackStartHandler(options: TanStackStartOptions): ReturnType<typeof Handler>;
|
|
17
|
+
export default TanStackStartHandler;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.TanStackStartHandler = TanStackStartHandler;
|
|
7
|
+
const handler_1 = __importDefault(require("./handler"));
|
|
8
|
+
/**
|
|
9
|
+
* Creates a TanStack Start server route handler.
|
|
10
|
+
* @see https://zenstack.dev/docs/reference/server-adapters/tanstack-start
|
|
11
|
+
*/
|
|
12
|
+
function TanStackStartHandler(options) {
|
|
13
|
+
return (0, handler_1.default)(options);
|
|
14
|
+
}
|
|
15
|
+
exports.default = TanStackStartHandler;
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tanstack-start/index.ts"],"names":[],"mappings":";;;;;AAiBA,oDAEC;AAlBD,wDAA+C;AAY/C;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,OAA6B;IAC9D,OAAO,IAAA,iBAAO,EAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,kBAAe,oBAAoB,CAAC"}
|