@zenstackhq/server 1.0.0-alpha.71 → 1.0.0-alpha.73
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/fastify/plugin.d.ts +17 -0
- package/fastify/plugin.js +1 -0
- package/fastify/plugin.js.map +1 -1
- package/openapi/index.d.ts +14 -3
- package/openapi/index.js +59 -8
- package/openapi/index.js.map +1 -1
- package/openapi/utils.d.ts +4 -0
- package/openapi/utils.js +25 -0
- package/openapi/utils.js.map +1 -0
- package/package.json +8 -11
package/fastify/plugin.d.ts
CHANGED
|
@@ -1,9 +1,26 @@
|
|
|
1
|
+
import { ModelZodSchema } from '@zenstackhq/runtime/zod';
|
|
1
2
|
import { FastifyPluginCallback, FastifyReply, FastifyRequest } from 'fastify';
|
|
2
3
|
import { LoggerConfig } from '../openapi';
|
|
4
|
+
/**
|
|
5
|
+
* Fastify plugin options
|
|
6
|
+
*/
|
|
3
7
|
export interface PluginOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Url prefix, e.g.: /api
|
|
10
|
+
*/
|
|
4
11
|
prefix: string;
|
|
12
|
+
/**
|
|
13
|
+
* Callback for gettign a PrismaClient for the given request
|
|
14
|
+
*/
|
|
5
15
|
getPrisma: (request: FastifyRequest, reply: FastifyReply) => unknown | Promise<unknown>;
|
|
16
|
+
/**
|
|
17
|
+
* Logger settings
|
|
18
|
+
*/
|
|
6
19
|
logger?: LoggerConfig;
|
|
20
|
+
/**
|
|
21
|
+
* Path to the generated zod schemas
|
|
22
|
+
*/
|
|
23
|
+
zodSchemas?: ModelZodSchema;
|
|
7
24
|
}
|
|
8
25
|
declare const _default: FastifyPluginCallback<PluginOptions, import("fastify").RawServerDefault, import("fastify").FastifyTypeProviderDefault, import("fastify").FastifyBaseLogger>;
|
|
9
26
|
export default _default;
|
package/fastify/plugin.js
CHANGED
package/fastify/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/fastify/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/fastify/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,oEAAgC;AAChC,wCAAyD;AA2BzD,MAAM,aAAa,GAAyC,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;;IACnF,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,EAAE,CAAC;IAEpC,IAAI,CAAA,MAAA,OAAO,CAAC,MAAM,0CAAE,IAAI,MAAK,SAAS,EAAE;QACpC,OAAO,CAAC,GAAG,CAAC,+CAA+C,MAAM,EAAE,CAAC,CAAC;KACxE;SAAM;QACH,MAAA,MAAA,OAAO,CAAC,MAAM,0CAAE,IAAI,mDAAG,+CAA+C,MAAM,EAAE,CAAC,CAAC;KACnF;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,EAAE,CAAO,OAAO,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAqB,CAAC;QAC7E,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAChE;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAA+B,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAa,EAAC;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAG,OAAO,CAAC,MAAc,CAAC,GAAG,CAAC;YAClC,KAAK;YACL,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,MAAM;YACN,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO,CAAC,UAAU;SACjC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,EAAE,CAAC;AACX,CAAC,CAAC;AAEF,kBAAe,IAAA,wBAAE,EAAC,aAAa,CAAC,CAAC"}
|
package/openapi/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { DbClientContract } from '@zenstackhq/runtime';
|
|
2
|
+
import { ModelZodSchema } from '@zenstackhq/runtime/zod';
|
|
2
3
|
type LoggerMethod = (message: string, code?: string) => void;
|
|
3
4
|
/**
|
|
4
5
|
* Logger config.
|
|
@@ -19,17 +20,27 @@ export type RequestHandlerOptions = {
|
|
|
19
20
|
*/
|
|
20
21
|
logger?: LoggerConfig | null;
|
|
21
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* OpenApi request context.
|
|
25
|
+
*/
|
|
22
26
|
export type RequestContext = {
|
|
23
27
|
method: string;
|
|
24
28
|
path: string;
|
|
25
|
-
query
|
|
26
|
-
requestBody
|
|
29
|
+
query?: Record<string, string | string[]>;
|
|
30
|
+
requestBody?: unknown;
|
|
27
31
|
prisma: DbClientContract;
|
|
28
32
|
logger?: LoggerConfig;
|
|
33
|
+
zodSchemas?: ModelZodSchema;
|
|
29
34
|
};
|
|
35
|
+
/**
|
|
36
|
+
* OpenApi response.
|
|
37
|
+
*/
|
|
30
38
|
export type Response = {
|
|
31
39
|
status: number;
|
|
32
40
|
body: unknown;
|
|
33
41
|
};
|
|
34
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Handles OpenApi requests
|
|
44
|
+
*/
|
|
45
|
+
export declare function handleRequest({ method, path, query, requestBody, prisma, logger, zodSchemas, }: RequestContext): Promise<Response>;
|
|
35
46
|
export {};
|
package/openapi/index.js
CHANGED
|
@@ -14,22 +14,51 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.handleRequest = void 0;
|
|
16
16
|
const runtime_1 = require("@zenstackhq/runtime");
|
|
17
|
+
const zod_1 = require("@zenstackhq/runtime/zod");
|
|
18
|
+
const change_case_1 = require("change-case");
|
|
17
19
|
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
const zod_validation_error_1 = require("zod-validation-error");
|
|
21
|
+
const utils_1 = require("./utils");
|
|
22
|
+
function getZodSchema(zodSchemas, model, operation) {
|
|
23
|
+
if (!zodSchemas) {
|
|
24
|
+
zodSchemas = (0, zod_1.getModelZodSchemas)();
|
|
21
25
|
}
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
if (zodSchemas[model]) {
|
|
27
|
+
return zodSchemas[model][operation];
|
|
28
|
+
}
|
|
29
|
+
else if (zodSchemas[(0, change_case_1.capitalCase)(model)]) {
|
|
30
|
+
return zodSchemas[(0, change_case_1.capitalCase)(model)][operation];
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function zodValidate(zodSchemas, model, operation, args) {
|
|
37
|
+
const zodSchema = getZodSchema(zodSchemas, model, operation);
|
|
38
|
+
if (zodSchema) {
|
|
39
|
+
const parseResult = zodSchema.safeParse(args);
|
|
40
|
+
if (parseResult.success) {
|
|
41
|
+
return { data: parseResult.data, error: undefined };
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return { data: undefined, error: (0, zod_validation_error_1.fromZodError)(parseResult.error).message };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return { data: args, error: undefined };
|
|
24
49
|
}
|
|
25
50
|
}
|
|
26
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Handles OpenApi requests
|
|
53
|
+
*/
|
|
54
|
+
function handleRequest({ method, path, query, requestBody, prisma, logger, zodSchemas, }) {
|
|
27
55
|
var _a, _b;
|
|
28
56
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
57
|
const parts = path.split('/');
|
|
30
58
|
if (parts.length < 2) {
|
|
31
59
|
return { status: 400, body: { error: 'invalid request path' } };
|
|
32
60
|
}
|
|
61
|
+
method = method.toUpperCase();
|
|
33
62
|
const op = parts.pop();
|
|
34
63
|
const model = parts.pop();
|
|
35
64
|
(0, tiny_invariant_1.default)(op);
|
|
@@ -44,6 +73,9 @@ function handleRequest({ method, path, query, requestBody, prisma, logger, }) {
|
|
|
44
73
|
if (method !== 'POST') {
|
|
45
74
|
return { status: 400, body: { message: 'invalid request method, only POST is supported' } };
|
|
46
75
|
}
|
|
76
|
+
if (!requestBody) {
|
|
77
|
+
return { status: 400, body: { message: 'missing request body' } };
|
|
78
|
+
}
|
|
47
79
|
args = requestBody;
|
|
48
80
|
// TODO: upsert's status code should be conditional
|
|
49
81
|
resCode = 201;
|
|
@@ -57,13 +89,16 @@ function handleRequest({ method, path, query, requestBody, prisma, logger, }) {
|
|
|
57
89
|
if (method !== 'GET') {
|
|
58
90
|
return { status: 400, body: { message: 'invalid request method, only GET is supported' } };
|
|
59
91
|
}
|
|
60
|
-
args = query.q ? unmarshal(query.q) : {};
|
|
92
|
+
args = (query === null || query === void 0 ? void 0 : query.q) ? unmarshal(query.q) : {};
|
|
61
93
|
break;
|
|
62
94
|
case 'update':
|
|
63
95
|
case 'updateMany':
|
|
64
96
|
if (method !== 'PUT' && method !== 'PATCH') {
|
|
65
97
|
return { status: 400, body: { message: 'invalid request method, only PUT AND PATCH are supported' } };
|
|
66
98
|
}
|
|
99
|
+
if (!requestBody) {
|
|
100
|
+
return { status: 400, body: { message: 'missing request body' } };
|
|
101
|
+
}
|
|
67
102
|
args = requestBody;
|
|
68
103
|
break;
|
|
69
104
|
case 'delete':
|
|
@@ -71,16 +106,24 @@ function handleRequest({ method, path, query, requestBody, prisma, logger, }) {
|
|
|
71
106
|
if (method !== 'DELETE') {
|
|
72
107
|
return { status: 400, body: { message: 'invalid request method, only DELETE is supported' } };
|
|
73
108
|
}
|
|
74
|
-
args = query.q ? unmarshal(query.q) : {};
|
|
109
|
+
args = (query === null || query === void 0 ? void 0 : query.q) ? unmarshal(query.q) : {};
|
|
75
110
|
break;
|
|
76
111
|
default:
|
|
77
112
|
return { status: 400, body: { message: 'invalid operation: ' + op } };
|
|
78
113
|
}
|
|
114
|
+
const { data, error } = zodValidate(zodSchemas, model, dbOp, args);
|
|
115
|
+
if (error) {
|
|
116
|
+
return { status: 400, body: { message: error } };
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
args = data;
|
|
120
|
+
}
|
|
79
121
|
try {
|
|
80
122
|
if (!prisma[model]) {
|
|
81
123
|
return { status: 400, body: { message: `unknown model name: ${model}` } };
|
|
82
124
|
}
|
|
83
125
|
const result = yield prisma[model][dbOp](args);
|
|
126
|
+
(0, utils_1.stripAuxFields)(result);
|
|
84
127
|
return { status: resCode, body: result };
|
|
85
128
|
}
|
|
86
129
|
catch (err) {
|
|
@@ -137,4 +180,12 @@ exports.handleRequest = handleRequest;
|
|
|
137
180
|
function unmarshal(value) {
|
|
138
181
|
return JSON.parse(value);
|
|
139
182
|
}
|
|
183
|
+
function logError(logger, message, code) {
|
|
184
|
+
if (logger === undefined) {
|
|
185
|
+
console.error(`@zenstackhq/openapi: error ${code ? '[' + code + ']' : ''}, ${message}`);
|
|
186
|
+
}
|
|
187
|
+
else if (logger === null || logger === void 0 ? void 0 : logger.error) {
|
|
188
|
+
logger.error(message, code);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
140
191
|
//# sourceMappingURL=index.js.map
|
package/openapi/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/openapi/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iDAM6B;AAC7B,oEAAuC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/openapi/index.ts"],"names":[],"mappings":"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"}
|
package/openapi/utils.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stripAuxFields = void 0;
|
|
4
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
5
|
+
/**
|
|
6
|
+
* Recursively strip auxiliary fields from the given data.
|
|
7
|
+
*/
|
|
8
|
+
function stripAuxFields(data) {
|
|
9
|
+
if (Array.isArray(data)) {
|
|
10
|
+
return data.forEach(stripAuxFields);
|
|
11
|
+
}
|
|
12
|
+
else if (data && typeof data === 'object') {
|
|
13
|
+
for (const [key, value] of Object.entries(data)) {
|
|
14
|
+
if (sdk_1.AUXILIARY_FIELDS.includes(key)) {
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
+
delete data[key];
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
stripAuxFields(value);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.stripAuxFields = stripAuxFields;
|
|
25
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/openapi/utils.ts"],"names":[],"mappings":";;;AAAA,yCAAmD;AAEnD;;GAEG;AACH,SAAgB,cAAc,CAAC,IAAa;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;KACvC;SAAM,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC7C,IAAI,sBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAChC,8DAA8D;gBAC9D,OAAQ,IAAY,CAAC,GAAG,CAAC,CAAC;aAC7B;iBAAM;gBACH,cAAc,CAAC,KAAK,CAAC,CAAC;aACzB;SACJ;KACJ;AACL,CAAC;AAbD,wCAaC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zenstackhq/server",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.73",
|
|
4
4
|
"displayName": "ZenStack Server-side Adapters",
|
|
5
5
|
"description": "ZenStack server-side adapters",
|
|
6
6
|
"homepage": "https://zenstack.dev",
|
|
@@ -14,26 +14,23 @@
|
|
|
14
14
|
"author": "",
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"dependencies": {
|
|
17
|
+
"change-case": "^4.1.2",
|
|
17
18
|
"tiny-invariant": "^1.3.1",
|
|
18
|
-
"
|
|
19
|
-
"@zenstackhq/
|
|
20
|
-
"@zenstackhq/
|
|
21
|
-
"@zenstackhq/
|
|
19
|
+
"zod-validation-error": "^0.2.1",
|
|
20
|
+
"@zenstackhq/runtime": "1.0.0-alpha.73",
|
|
21
|
+
"@zenstackhq/sdk": "1.0.0-alpha.73",
|
|
22
|
+
"@zenstackhq/openapi": "1.0.0-alpha.73"
|
|
22
23
|
},
|
|
23
24
|
"devDependencies": {
|
|
24
25
|
"@types/jest": "^29.4.0",
|
|
25
|
-
"@types/react": "^18.0.26",
|
|
26
|
-
"@types/supertest": "^2.0.12",
|
|
27
26
|
"copyfiles": "^2.4.1",
|
|
28
27
|
"fastify": "^4.14.1",
|
|
29
28
|
"fastify-plugin": "^4.5.0",
|
|
30
29
|
"jest": "^29.4.3",
|
|
31
|
-
"react": "^17.0.2 || ^18",
|
|
32
30
|
"rimraf": "^3.0.2",
|
|
33
|
-
"superjson": "^1.11.0",
|
|
34
|
-
"supertest": "^6.3.3",
|
|
35
31
|
"ts-jest": "^29.0.5",
|
|
36
|
-
"typescript": "^4.9.4"
|
|
32
|
+
"typescript": "^4.9.4",
|
|
33
|
+
"@zenstackhq/testtools": "1.0.0-alpha.73"
|
|
37
34
|
},
|
|
38
35
|
"scripts": {
|
|
39
36
|
"clean": "rimraf dist",
|