@zenstackhq/server 1.0.0-alpha.71 → 1.0.0-alpha.74
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/express/index.d.ts +1 -0
- package/express/index.js +9 -0
- package/express/index.js.map +1 -0
- package/express/middleware.d.ts +25 -0
- package/express/middleware.js +43 -0
- package/express/middleware.js.map +1 -0
- package/fastify/plugin.d.ts +17 -0
- package/fastify/plugin.js +12 -0
- package/fastify/plugin.js.map +1 -1
- package/openapi/index.d.ts +14 -3
- package/openapi/index.js +57 -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 +12 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as ZenStackMiddleware } from './middleware';
|
package/express/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
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.ZenStackMiddleware = void 0;
|
|
7
|
+
var middleware_1 = require("./middleware");
|
|
8
|
+
Object.defineProperty(exports, "ZenStackMiddleware", { enumerable: true, get: function () { return __importDefault(middleware_1).default; } });
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/express/index.ts"],"names":[],"mappings":";;;;;;AAAA,2CAA6D;AAApD,iIAAA,OAAO,OAAsB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ModelZodSchema } from '@zenstackhq/runtime/zod';
|
|
2
|
+
import type { Handler, Request, Response } from 'express';
|
|
3
|
+
import { LoggerConfig } from '../openapi';
|
|
4
|
+
/**
|
|
5
|
+
* Express middleware options
|
|
6
|
+
*/
|
|
7
|
+
export interface MiddlewareOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Callback for getting a PrismaClient for the given request
|
|
10
|
+
*/
|
|
11
|
+
getPrisma: (req: Request, res: Response) => unknown | Promise<unknown>;
|
|
12
|
+
/**
|
|
13
|
+
* Logger settings
|
|
14
|
+
*/
|
|
15
|
+
logger?: LoggerConfig;
|
|
16
|
+
/**
|
|
17
|
+
* Zod schemas for validating request input. Pass `true` to load from standard location (need to enable `@core/zod` plugin in schema.zmodel).
|
|
18
|
+
*/
|
|
19
|
+
zodSchemas?: ModelZodSchema | boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Creates an Express middleware for handling CRUD requests.
|
|
23
|
+
*/
|
|
24
|
+
declare const factory: (options: MiddlewareOptions) => Handler;
|
|
25
|
+
export default factory;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const zod_1 = require("@zenstackhq/runtime/zod");
|
|
13
|
+
const openapi_1 = require("../openapi");
|
|
14
|
+
/**
|
|
15
|
+
* Creates an Express middleware for handling CRUD requests.
|
|
16
|
+
*/
|
|
17
|
+
const factory = (options) => {
|
|
18
|
+
let schemas;
|
|
19
|
+
if (typeof options.zodSchemas === 'object') {
|
|
20
|
+
schemas = options.zodSchemas;
|
|
21
|
+
}
|
|
22
|
+
else if (options.zodSchemas === true) {
|
|
23
|
+
schemas = (0, zod_1.getModelZodSchemas)();
|
|
24
|
+
}
|
|
25
|
+
return (request, response) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
+
const prisma = (yield options.getPrisma(request, response));
|
|
27
|
+
if (!prisma) {
|
|
28
|
+
throw new Error('unable to get prisma from request context');
|
|
29
|
+
}
|
|
30
|
+
const r = yield (0, openapi_1.handleRequest)({
|
|
31
|
+
method: request.method,
|
|
32
|
+
path: request.path,
|
|
33
|
+
query: request.query,
|
|
34
|
+
requestBody: request.body,
|
|
35
|
+
prisma,
|
|
36
|
+
logger: options.logger,
|
|
37
|
+
zodSchemas: schemas,
|
|
38
|
+
});
|
|
39
|
+
response.status(r.status).json(r.body);
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
exports.default = factory;
|
|
43
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/express/middleware.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,iDAA6E;AAE7E,wCAAyD;AAsBzD;;GAEG;AACH,MAAM,OAAO,GAAG,CAAC,OAA0B,EAAW,EAAE;IACpD,IAAI,OAAmC,CAAC;IACxC,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;QACxC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;KAChC;SAAM,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE;QACpC,OAAO,GAAG,IAAA,wBAAkB,GAAE,CAAC;KAClC;IAED,OAAO,CAAO,OAAO,EAAE,QAAQ,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAqB,CAAC;QAChF,IAAI,CAAC,MAAM,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAChE;QAED,MAAM,CAAC,GAAG,MAAM,IAAA,uBAAa,EAAC;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAA0C;YACzD,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,MAAM;YACN,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,UAAU,EAAE,OAAO;SACtB,CAAC,CAAC;QAEH,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAA,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,OAAO,CAAC"}
|
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 getting 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
|
+
* Zod schemas for validating request input. Pass `true` to load from standard location (need to enable `@core/zod` plugin in schema.zmodel).
|
|
22
|
+
*/
|
|
23
|
+
zodSchemas?: ModelZodSchema | boolean;
|
|
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
|
@@ -12,8 +12,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const zod_1 = require("@zenstackhq/runtime/zod");
|
|
15
16
|
const fastify_plugin_1 = __importDefault(require("fastify-plugin"));
|
|
16
17
|
const openapi_1 = require("../openapi");
|
|
18
|
+
/**
|
|
19
|
+
* Fastify plugin for handling CRUD requests.
|
|
20
|
+
*/
|
|
17
21
|
const pluginHandler = (fastify, options, done) => {
|
|
18
22
|
var _a, _b, _c, _d;
|
|
19
23
|
const prefix = (_a = options.prefix) !== null && _a !== void 0 ? _a : '';
|
|
@@ -23,6 +27,13 @@ const pluginHandler = (fastify, options, done) => {
|
|
|
23
27
|
else {
|
|
24
28
|
(_d = (_c = options.logger) === null || _c === void 0 ? void 0 : _c.info) === null || _d === void 0 ? void 0 : _d.call(_c, `ZenStackPlugin installing routes at prefix: ${prefix}`);
|
|
25
29
|
}
|
|
30
|
+
let schemas;
|
|
31
|
+
if (typeof options.zodSchemas === 'object') {
|
|
32
|
+
schemas = options.zodSchemas;
|
|
33
|
+
}
|
|
34
|
+
else if (options.zodSchemas === true) {
|
|
35
|
+
schemas = (0, zod_1.getModelZodSchemas)();
|
|
36
|
+
}
|
|
26
37
|
fastify.all(`${prefix}/*`, (request, reply) => __awaiter(void 0, void 0, void 0, function* () {
|
|
27
38
|
const prisma = (yield options.getPrisma(request, reply));
|
|
28
39
|
if (!prisma) {
|
|
@@ -36,6 +47,7 @@ const pluginHandler = (fastify, options, done) => {
|
|
|
36
47
|
requestBody: request.body,
|
|
37
48
|
prisma,
|
|
38
49
|
logger: options.logger,
|
|
50
|
+
zodSchemas: schemas,
|
|
39
51
|
});
|
|
40
52
|
reply.status(response.status).send(response.body);
|
|
41
53
|
}));
|
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":";;;;;;;;;;;;;;AAEA,iDAA6E;AAE7E,oEAAgC;AAChC,wCAAyD;AA2BzD;;GAEG;AACH,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,IAAI,OAAmC,CAAC;IACxC,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE;QACxC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;KAChC;SAAM,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE;QACpC,OAAO,GAAG,IAAA,wBAAkB,GAAE,CAAC;KAClC;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;SACtB,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 type { 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,47 @@ 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 change_case_1 = require("change-case");
|
|
17
18
|
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
const zod_validation_error_1 = require("zod-validation-error");
|
|
20
|
+
const utils_1 = require("./utils");
|
|
21
|
+
function getZodSchema(zodSchemas, model, operation) {
|
|
22
|
+
if (zodSchemas[model]) {
|
|
23
|
+
return zodSchemas[model][operation];
|
|
21
24
|
}
|
|
22
|
-
else if (
|
|
23
|
-
|
|
25
|
+
else if (zodSchemas[(0, change_case_1.capitalCase)(model)]) {
|
|
26
|
+
return zodSchemas[(0, change_case_1.capitalCase)(model)][operation];
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return undefined;
|
|
24
30
|
}
|
|
25
31
|
}
|
|
26
|
-
function
|
|
32
|
+
function zodValidate(zodSchemas, model, operation, args) {
|
|
33
|
+
const zodSchema = zodSchemas && getZodSchema(zodSchemas, model, operation);
|
|
34
|
+
if (zodSchema) {
|
|
35
|
+
const parseResult = zodSchema.safeParse(args);
|
|
36
|
+
if (parseResult.success) {
|
|
37
|
+
return { data: parseResult.data, error: undefined };
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return { data: undefined, error: (0, zod_validation_error_1.fromZodError)(parseResult.error).message };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return { data: args, error: undefined };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Handles OpenApi requests
|
|
49
|
+
*/
|
|
50
|
+
function handleRequest({ method, path, query, requestBody, prisma, logger, zodSchemas, }) {
|
|
27
51
|
var _a, _b;
|
|
28
52
|
return __awaiter(this, void 0, void 0, function* () {
|
|
29
53
|
const parts = path.split('/');
|
|
30
54
|
if (parts.length < 2) {
|
|
31
55
|
return { status: 400, body: { error: 'invalid request path' } };
|
|
32
56
|
}
|
|
57
|
+
method = method.toUpperCase();
|
|
33
58
|
const op = parts.pop();
|
|
34
59
|
const model = parts.pop();
|
|
35
60
|
(0, tiny_invariant_1.default)(op);
|
|
@@ -44,6 +69,9 @@ function handleRequest({ method, path, query, requestBody, prisma, logger, }) {
|
|
|
44
69
|
if (method !== 'POST') {
|
|
45
70
|
return { status: 400, body: { message: 'invalid request method, only POST is supported' } };
|
|
46
71
|
}
|
|
72
|
+
if (!requestBody) {
|
|
73
|
+
return { status: 400, body: { message: 'missing request body' } };
|
|
74
|
+
}
|
|
47
75
|
args = requestBody;
|
|
48
76
|
// TODO: upsert's status code should be conditional
|
|
49
77
|
resCode = 201;
|
|
@@ -57,13 +85,16 @@ function handleRequest({ method, path, query, requestBody, prisma, logger, }) {
|
|
|
57
85
|
if (method !== 'GET') {
|
|
58
86
|
return { status: 400, body: { message: 'invalid request method, only GET is supported' } };
|
|
59
87
|
}
|
|
60
|
-
args = query.q ? unmarshal(query.q) : {};
|
|
88
|
+
args = (query === null || query === void 0 ? void 0 : query.q) ? unmarshal(query.q) : {};
|
|
61
89
|
break;
|
|
62
90
|
case 'update':
|
|
63
91
|
case 'updateMany':
|
|
64
92
|
if (method !== 'PUT' && method !== 'PATCH') {
|
|
65
93
|
return { status: 400, body: { message: 'invalid request method, only PUT AND PATCH are supported' } };
|
|
66
94
|
}
|
|
95
|
+
if (!requestBody) {
|
|
96
|
+
return { status: 400, body: { message: 'missing request body' } };
|
|
97
|
+
}
|
|
67
98
|
args = requestBody;
|
|
68
99
|
break;
|
|
69
100
|
case 'delete':
|
|
@@ -71,16 +102,26 @@ function handleRequest({ method, path, query, requestBody, prisma, logger, }) {
|
|
|
71
102
|
if (method !== 'DELETE') {
|
|
72
103
|
return { status: 400, body: { message: 'invalid request method, only DELETE is supported' } };
|
|
73
104
|
}
|
|
74
|
-
args = query.q ? unmarshal(query.q) : {};
|
|
105
|
+
args = (query === null || query === void 0 ? void 0 : query.q) ? unmarshal(query.q) : {};
|
|
75
106
|
break;
|
|
76
107
|
default:
|
|
77
108
|
return { status: 400, body: { message: 'invalid operation: ' + op } };
|
|
78
109
|
}
|
|
110
|
+
if (zodSchemas) {
|
|
111
|
+
const { data, error } = zodValidate(zodSchemas, model, dbOp, args);
|
|
112
|
+
if (error) {
|
|
113
|
+
return { status: 400, body: { message: error } };
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
args = data;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
79
119
|
try {
|
|
80
120
|
if (!prisma[model]) {
|
|
81
121
|
return { status: 400, body: { message: `unknown model name: ${model}` } };
|
|
82
122
|
}
|
|
83
123
|
const result = yield prisma[model][dbOp](args);
|
|
124
|
+
(0, utils_1.stripAuxFields)(result);
|
|
84
125
|
return { status: resCode, body: result };
|
|
85
126
|
}
|
|
86
127
|
catch (err) {
|
|
@@ -137,4 +178,12 @@ exports.handleRequest = handleRequest;
|
|
|
137
178
|
function unmarshal(value) {
|
|
138
179
|
return JSON.parse(value);
|
|
139
180
|
}
|
|
181
|
+
function logError(logger, message, code) {
|
|
182
|
+
if (logger === undefined) {
|
|
183
|
+
console.error(`@zenstackhq/openapi: error ${code ? '[' + code + ']' : ''}, ${message}`);
|
|
184
|
+
}
|
|
185
|
+
else if (logger === null || logger === void 0 ? void 0 : logger.error) {
|
|
186
|
+
logger.error(message, code);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
140
189
|
//# 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;
|
|
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.74",
|
|
4
4
|
"displayName": "ZenStack Server-side Adapters",
|
|
5
5
|
"description": "ZenStack server-side adapters",
|
|
6
6
|
"homepage": "https://zenstack.dev",
|
|
@@ -14,26 +14,29 @@
|
|
|
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.74",
|
|
21
|
+
"@zenstackhq/openapi": "1.0.0-alpha.74",
|
|
22
|
+
"@zenstackhq/sdk": "1.0.0-alpha.74"
|
|
22
23
|
},
|
|
23
24
|
"devDependencies": {
|
|
25
|
+
"@types/body-parser": "^1.19.2",
|
|
26
|
+
"@types/express": "^4.17.17",
|
|
24
27
|
"@types/jest": "^29.4.0",
|
|
25
|
-
"@types/react": "^18.0.26",
|
|
26
28
|
"@types/supertest": "^2.0.12",
|
|
29
|
+
"body-parser": "^1.20.2",
|
|
27
30
|
"copyfiles": "^2.4.1",
|
|
31
|
+
"express": "^4.18.2",
|
|
28
32
|
"fastify": "^4.14.1",
|
|
29
33
|
"fastify-plugin": "^4.5.0",
|
|
30
34
|
"jest": "^29.4.3",
|
|
31
|
-
"react": "^17.0.2 || ^18",
|
|
32
35
|
"rimraf": "^3.0.2",
|
|
33
|
-
"superjson": "^1.11.0",
|
|
34
36
|
"supertest": "^6.3.3",
|
|
35
37
|
"ts-jest": "^29.0.5",
|
|
36
|
-
"typescript": "^4.9.4"
|
|
38
|
+
"typescript": "^4.9.4",
|
|
39
|
+
"@zenstackhq/testtools": "1.0.0-alpha.74"
|
|
37
40
|
},
|
|
38
41
|
"scripts": {
|
|
39
42
|
"clean": "rimraf dist",
|