express-zod-api 5.6.1 → 5.9.0-beta1

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/CHANGELOG.md CHANGED
@@ -2,6 +2,49 @@
2
2
 
3
3
  ## Version 5
4
4
 
5
+ ### v5.9.0-beta1
6
+
7
+ - In this build, improvements have been made to the `EndpointsFactory`, in terms of combining the input schemas of
8
+ middlewares and the endpoint itself. A custom type has been replaced with usage of `ZodIntersection` schema with
9
+ respect to the originals.
10
+ - The generated documentation has improved in this regard:
11
+ - Previously, fields from an object union were documented in a simplified way as optional.
12
+ - Instead, it is now documented using `oneOf` OpenAPI notation.
13
+ - In addition, you can now also use the new `z.discriminatedUnion()` as the input schema on the top level.
14
+
15
+ ```typescript
16
+ // example
17
+ const endpoint = defaultEndpointsFactory.build({
18
+ method: "post",
19
+ input: z.discriminatedUnion("type", [
20
+ z.object({
21
+ type: z.literal("text"),
22
+ str: z.string()
23
+ }),
24
+ z.object({
25
+ type: z.literal("numeric"),
26
+ num: z.number()
27
+ }),
28
+ ]),
29
+ output: z.object({...}),
30
+ handler: async ({ input }) => {
31
+ // the type of the input:
32
+ // | { type: "text", str: string }
33
+ // | { type: "numeric", num: number }
34
+ }
35
+ });
36
+ ```
37
+
38
+ ### v5.8.0
39
+
40
+ - `zod` version is 3.13.4.
41
+ - There is a new schema `z.nan()` and some fixes.
42
+
43
+ ### v5.7.0
44
+
45
+ - `zod` version is 3.12.0.
46
+ - There is a new schema `z.discriminatedUnion()` and various fixes.
47
+
5
48
  ### v5.6.1
6
49
 
7
50
  - `express` version is 4.17.3.
@@ -1,18 +1,14 @@
1
1
  import { Request } from "express";
2
2
  import { z } from "zod";
3
3
  import { CommonConfig, InputSources, LoggerConfig } from "./config-type";
4
- import { MiddlewareDefinition } from "./middleware";
4
+ import { AnyMiddlewareDef } from "./middleware";
5
5
  export declare type FlatObject = Record<string, any>;
6
6
  declare type ObjectSchema = z.AnyZodObject;
7
- declare type Extractable = "shape" | "_unknownKeys" | "_catchall" | "_output" | "_input";
8
- declare type UnionSchema = z.ZodUnion<[ObjectSchema, ...ObjectSchema[]]>;
9
- declare type IntersectionSchema = z.ZodIntersection<ObjectSchema, ObjectSchema>;
10
- export declare type IOSchema = ObjectSchema | UnionSchema | IntersectionSchema;
7
+ declare type UnionSchema = z.ZodUnion<[IOSchema, ...IOSchema[]]>;
8
+ declare type IntersectionSchema = z.ZodIntersection<IOSchema, IOSchema>;
9
+ declare type DiscUnionSchema = z.ZodDiscriminatedUnion<string, z.Primitive, ObjectSchema>;
10
+ export declare type IOSchema = ObjectSchema | UnionSchema | IntersectionSchema | DiscUnionSchema;
11
11
  export declare type ArrayElement<T extends readonly unknown[]> = T extends readonly (infer K)[] ? K : never;
12
- declare type UnionResult<T extends ObjectSchema[], F extends Extractable> = ArrayElement<T>[F];
13
- declare type IntersectionResult<T extends IntersectionSchema, F extends Extractable> = T["_def"]["left"][F] & T["_def"]["right"][F];
14
- declare type IOExtract<T extends IOSchema | any, F extends Extractable> = T extends ObjectSchema ? T[F] : T extends UnionSchema ? UnionResult<T["options"], F> : T extends IntersectionSchema ? IntersectionResult<T, F> : unknown;
15
- export declare type Merge<A extends IOSchema, B extends IOSchema | any> = z.ZodObject<IOExtract<A, "shape"> & IOExtract<B, "shape">, IOExtract<A, "_unknownKeys">, IOExtract<A, "_catchall">, IOExtract<A, "_output"> & IOExtract<B, "_output">, IOExtract<A, "_input"> & IOExtract<B, "_input">>;
16
12
  export declare type OutputMarker = IOSchema & {
17
13
  _typeGuard: "OutputMarker";
18
14
  };
@@ -22,8 +18,12 @@ export declare const routePathParamsRegex: RegExp;
22
18
  export declare type ReplaceMarkerInShape<S extends z.ZodRawShape, OUT extends IOSchema> = {
23
19
  [K in keyof S]: S[K] extends OutputMarker ? OUT : S[K];
24
20
  };
25
- export declare function extractObjectSchema(subject: IOSchema): ObjectSchema;
26
- export declare function combineEndpointAndMiddlewareInputSchemas<IN extends IOSchema, MwIN>(input: IN, middlewares: MiddlewareDefinition<IOSchema, any, any>[]): Merge<IN, MwIN>;
21
+ export declare type ProbableIntersection<A extends IOSchema | null, B extends IOSchema> = A extends null ? B : A extends IOSchema ? z.ZodIntersection<A, B> : never;
22
+ /**
23
+ * @description intersects input schemas of middlewares and the endpoint
24
+ * @since 07.03.2022 former combineEndpointAndMiddlewareInputSchemas()
25
+ */
26
+ export declare const getFinalEndpointInputSchema: <MIN extends IOSchema | null, IN extends IOSchema>(middlewares: AnyMiddlewareDef[], input: IN) => ProbableIntersection<MIN, IN>;
27
27
  export declare const defaultInputSources: InputSources;
28
28
  export declare function getInitialInput(request: Request, inputAssignment: CommonConfig["inputSources"]): any;
29
29
  export declare function isLoggerConfig(logger: any): logger is LoggerConfig;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.errToObj = exports.hasUpload = exports.getRoutePathParams = exports.combinations = exports.getExamples = exports.getStatusCodeFromError = exports.getMessageFromError = exports.isValidDate = exports.isLoggerConfig = exports.getInitialInput = exports.defaultInputSources = exports.combineEndpointAndMiddlewareInputSchemas = exports.extractObjectSchema = exports.routePathParamsRegex = exports.markOutput = void 0;
3
+ exports.errToObj = exports.hasUpload = exports.getRoutePathParams = exports.combinations = exports.getExamples = exports.getStatusCodeFromError = exports.getMessageFromError = exports.isValidDate = exports.isLoggerConfig = exports.getInitialInput = exports.defaultInputSources = exports.getFinalEndpointInputSchema = exports.routePathParamsRegex = exports.markOutput = void 0;
4
4
  const http_errors_1 = require("http-errors");
5
5
  const zod_1 = require("zod");
6
6
  const config_type_1 = require("./config-type");
@@ -11,39 +11,25 @@ const markOutput = (output) => output;
11
11
  exports.markOutput = markOutput;
12
12
  /** @see https://expressjs.com/en/guide/routing.html */
13
13
  exports.routePathParamsRegex = /:([A-Za-z0-9_]+)/g;
14
- function extractObjectSchema(subject) {
15
- if (subject instanceof zod_1.z.ZodObject) {
16
- return subject;
17
- }
18
- let objectSchema;
19
- if (subject instanceof zod_1.z.ZodUnion) {
20
- objectSchema = subject.options.reduce((acc, option) => acc.partial().merge(option.partial()));
21
- }
22
- else {
23
- // intersection schema
24
- objectSchema = subject._def.left.merge(subject._def.right);
25
- }
26
- return (0, metadata_1.copyMeta)(subject, objectSchema);
27
- }
28
- exports.extractObjectSchema = extractObjectSchema;
29
- function combineEndpointAndMiddlewareInputSchemas(input, middlewares) {
30
- if (middlewares.length === 0) {
31
- return extractObjectSchema(input);
32
- }
33
- const mSchema = middlewares
34
- .map((middleware) => middleware.input)
35
- .reduce((carry, schema) => extractObjectSchema(carry).merge(extractObjectSchema(schema)));
36
- const result = extractObjectSchema(mSchema).merge(extractObjectSchema(input));
14
+ /**
15
+ * @description intersects input schemas of middlewares and the endpoint
16
+ * @since 07.03.2022 former combineEndpointAndMiddlewareInputSchemas()
17
+ */
18
+ const getFinalEndpointInputSchema = (middlewares, input) => {
19
+ const result = middlewares
20
+ .map(({ input: schema }) => schema)
21
+ .concat(input)
22
+ .reduce((acc, schema) => acc.and(schema));
37
23
  for (const middleware of middlewares) {
38
24
  (0, metadata_1.copyMeta)(middleware.input, result);
39
25
  }
40
26
  (0, metadata_1.copyMeta)(input, result);
41
27
  return result;
42
- }
43
- exports.combineEndpointAndMiddlewareInputSchemas = combineEndpointAndMiddlewareInputSchemas;
28
+ };
29
+ exports.getFinalEndpointInputSchema = getFinalEndpointInputSchema;
44
30
  function areFilesAvailable(request) {
45
31
  const contentType = request.header("content-type") || "";
46
- const isMultipart = contentType.substr(0, mime_1.mimeMultipart.length).toLowerCase() === mime_1.mimeMultipart;
32
+ const isMultipart = contentType.slice(0, mime_1.mimeMultipart.length).toLowerCase() === mime_1.mimeMultipart;
47
33
  return "files" in request && isMultipart;
48
34
  }
49
35
  exports.defaultInputSources = {
@@ -1 +1 @@
1
- {"version":3,"file":"common-helpers.js","sourceRoot":"","sources":["../src/common-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common-helpers.js","sourceRoot":"","sources":["../src/common-helpers.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,9 @@ import { Endpoint } from "./endpoint";
2
2
  import { Method } from "./method";
3
3
  export declare class DependsOnMethod {
4
4
  readonly methods: {
5
- [K in Method]?: Endpoint<any, any, any, any, K, any, any> | Endpoint<any, any, any, any, Method, any, any>;
5
+ [K in Method]?: Endpoint<any, any, any, K, any, any> | Endpoint<any, any, any, Method, any, any>;
6
6
  };
7
7
  constructor(methods: {
8
- [K in Method]?: Endpoint<any, any, any, any, K, any, any> | Endpoint<any, any, any, any, Method, any, any>;
8
+ [K in Method]?: Endpoint<any, any, any, K, any, any> | Endpoint<any, any, any, Method, any, any>;
9
9
  });
10
10
  }
@@ -3,9 +3,9 @@ import { Logger } from "winston";
3
3
  import { z } from "zod";
4
4
  import { ApiResponse } from "./api-response";
5
5
  import { CommonConfig } from "./config-type";
6
- import { IOSchema, Merge, OutputMarker, ReplaceMarkerInShape } from "./common-helpers";
6
+ import { FlatObject, IOSchema, OutputMarker, ReplaceMarkerInShape } from "./common-helpers";
7
7
  import { Method, MethodsDefinition } from "./method";
8
- import { MiddlewareDefinition } from "./middleware";
8
+ import { AnyMiddlewareDef } from "./middleware";
9
9
  import { ResultHandlerDefinition } from "./result-handler";
10
10
  export declare type Handler<IN, OUT, OPT> = (params: {
11
11
  input: IN;
@@ -29,33 +29,32 @@ export declare abstract class AbstractEndpoint {
29
29
  abstract getPositiveMimeTypes(): string[];
30
30
  abstract getNegativeMimeTypes(): string[];
31
31
  }
32
- export declare type EndpointInput<T> = T extends Endpoint<infer IN, any, infer mIN, any, any, any, any> ? z.input<Merge<IN, mIN>> : never;
33
- export declare type EndpointOutput<T> = T extends Endpoint<any, infer OUT, any, any, any, any, any> ? z.output<OUT> : never;
32
+ export declare type EndpointInput<T> = T extends Endpoint<infer IN, any, any, any, any, any> ? z.input<IN> : never;
33
+ export declare type EndpointOutput<T> = T extends Endpoint<any, infer OUT, any, any, any, any> ? z.output<OUT> : never;
34
34
  export declare type EndpointResponse<E extends AbstractEndpoint> = z.output<ReturnType<E["getPositiveResponseSchema"]> extends z.ZodObject<z.ZodRawShape> ? z.ZodObject<ReplaceMarkerInShape<ReturnType<E["getPositiveResponseSchema"]>["_shape"], ReturnType<E["getOutputSchema"]>>> : ReturnType<E["getPositiveResponseSchema"]> extends OutputMarker ? ReturnType<E["getOutputSchema"]> : ReturnType<E["getPositiveResponseSchema"]>> | z.output<ReturnType<E["getNegativeResponseSchema"]>>;
35
- declare type EndpointProps<IN extends IOSchema, OUT extends IOSchema, MwIN, OPT, M extends Method, POS extends ApiResponse, NEG extends ApiResponse> = {
36
- middlewares: MiddlewareDefinition<any, any, any>[];
35
+ declare type EndpointProps<IN extends IOSchema, OUT extends IOSchema, OPT extends FlatObject, M extends Method, POS extends ApiResponse, NEG extends ApiResponse> = {
36
+ middlewares: AnyMiddlewareDef[];
37
37
  inputSchema: IN;
38
38
  mimeTypes: string[];
39
39
  outputSchema: OUT;
40
- handler: Handler<z.output<Merge<IN, MwIN>>, z.input<OUT>, OPT>;
40
+ handler: Handler<z.output<IN>, z.input<OUT>, OPT>;
41
41
  resultHandler: ResultHandlerDefinition<POS, NEG>;
42
42
  description?: string;
43
43
  } & MethodsDefinition<M>;
44
- /** mIN, OPT - from Middlewares */
45
- export declare class Endpoint<IN extends IOSchema, OUT extends IOSchema, MwIN, OPT, M extends Method, POS extends ApiResponse, NEG extends ApiResponse> extends AbstractEndpoint {
44
+ export declare class Endpoint<IN extends IOSchema, OUT extends IOSchema, OPT extends FlatObject, M extends Method, POS extends ApiResponse, NEG extends ApiResponse> extends AbstractEndpoint {
46
45
  #private;
47
46
  protected readonly description?: string;
48
47
  protected readonly methods: M[];
49
- protected readonly middlewares: MiddlewareDefinition<any, any, any>[];
50
- protected readonly inputSchema: Merge<IN, MwIN>;
48
+ protected readonly middlewares: AnyMiddlewareDef[];
49
+ protected readonly inputSchema: IN;
51
50
  protected readonly mimeTypes: string[];
52
51
  protected readonly outputSchema: OUT;
53
- protected readonly handler: Handler<z.output<Merge<IN, MwIN>>, z.input<OUT>, OPT>;
52
+ protected readonly handler: Handler<z.output<IN>, z.input<OUT>, OPT>;
54
53
  protected readonly resultHandler: ResultHandlerDefinition<POS, NEG>;
55
- constructor({ middlewares, inputSchema, outputSchema, handler, resultHandler, description, mimeTypes, ...rest }: EndpointProps<IN, OUT, MwIN, OPT, M, POS, NEG>);
54
+ constructor({ middlewares, inputSchema, outputSchema, handler, resultHandler, description, mimeTypes, ...rest }: EndpointProps<IN, OUT, OPT, M, POS, NEG>);
56
55
  getDescription(): string | undefined;
57
56
  getMethods(): M[];
58
- getInputSchema(): Merge<IN, MwIN>;
57
+ getInputSchema(): IN;
59
58
  getOutputSchema(): OUT;
60
59
  getPositiveResponseSchema(): POS["schema"];
61
60
  getNegativeResponseSchema(): NEG["schema"];
package/dist/endpoint.js CHANGED
@@ -14,7 +14,6 @@ const result_handler_1 = require("./result-handler");
14
14
  class AbstractEndpoint {
15
15
  }
16
16
  exports.AbstractEndpoint = AbstractEndpoint;
17
- /** mIN, OPT - from Middlewares */
18
17
  class Endpoint extends AbstractEndpoint {
19
18
  constructor({ middlewares, inputSchema, outputSchema, handler, resultHandler, description, mimeTypes, ...rest }) {
20
19
  super();
@@ -22,7 +21,7 @@ class Endpoint extends AbstractEndpoint {
22
21
  this.methods = [];
23
22
  this.middlewares = [];
24
23
  this.middlewares = middlewares;
25
- this.inputSchema = (0, common_helpers_1.combineEndpointAndMiddlewareInputSchemas)(inputSchema, middlewares);
24
+ this.inputSchema = inputSchema;
26
25
  this.mimeTypes = mimeTypes;
27
26
  this.outputSchema = outputSchema;
28
27
  this.handler = handler;
@@ -150,7 +149,8 @@ _Endpoint_instances = new WeakSet(), _Endpoint_setupCorsHeaders = function _Endp
150
149
  return { input, options, isStreamClosed };
151
150
  }, _Endpoint_parseAndRunHandler = async function _Endpoint_parseAndRunHandler({ input, options, logger, }) {
152
151
  return this.handler({
153
- input: await this.inputSchema.parseAsync(input),
152
+ // final input types transformations for handler
153
+ input: (await this.inputSchema.parseAsync(input)),
154
154
  options,
155
155
  logger,
156
156
  });
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":";;;;;;;;;AAEA,6BAAwB;AAGxB,qCAA8C;AAC9C,qDAO0B;AAG1B,qDAA8E;AAQ9E,MAAsB,gBAAgB;CAgBrC;AAhBD,4CAgBC;AA6DD,kCAAkC;AAClC,MAAa,QAQX,SAAQ,gBAAgB;IAcxB,YAAY,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,OAAO,EACP,aAAa,EACb,WAAW,EACX,SAAS,EACT,GAAG,IAAI,EACwC;QAC/C,KAAK,EAAE,CAAC;;QAtBS,YAAO,GAAQ,EAAE,CAAC;QAClB,gBAAW,GAA0C,EAAE,CAAC;QAsBzE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAA,yDAAwC,EACzD,WAAW,EACX,WAAW,CACZ,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,SAAS,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC9B;IACH,CAAC;IAEe,cAAc;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEe,UAAU;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEe,cAAc;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEe,eAAe;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEe,yBAAyB;QACvC,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC;IAC1E,CAAC;IAEe,yBAAyB;QACvC,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC;IACzD,CAAC;IAEe,iBAAiB;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEe,oBAAoB;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;IAC7E,CAAC;IAEe,oBAAoB;QAClC,OAAO,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC;IAC5D,CAAC;IAyHe,KAAK,CAAC,OAAO,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,MAAM,GAMP;QACC,IAAI,MAAW,CAAC;QAChB,IAAI,KAAK,GAAiB,IAAI,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,EAAE;YACf,uBAAA,IAAI,uDAAkB,MAAtB,IAAI,EAAmB,QAAQ,CAAC,CAAC;SAClC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE;YAChC,QAAQ,CAAC,GAAG,EAAE,CAAC;YACf,OAAO;SACR;QACD,MAAM,YAAY,GAAG,IAAA,gCAAe,EAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QACnE,IAAI;YACF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,uBAAA,IAAI,qDAAgB,MAApB,IAAI,EAAiB;gBACpE,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE;gBAC1B,OAAO;gBACP,QAAQ;gBACR,MAAM;aACP,CAAC,CAAC;YACH,IAAI,cAAc,EAAE;gBAClB,OAAO;aACR;YACD,MAAM,GAAG,MAAM,uBAAA,IAAI,kDAAa,MAAjB,IAAI,EACjB,MAAM,uBAAA,IAAI,yDAAoB,MAAxB,IAAI,EAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAC3D,CAAC;SACH;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,YAAY,KAAK,EAAE;gBACtB,KAAK,GAAG,CAAC,CAAC;aACX;SACF;QACD,MAAM,uBAAA,IAAI,mDAAc,MAAlB,IAAI,EAAe;YACvB,YAAY;YACZ,MAAM;YACN,OAAO;YACP,QAAQ;YACR,KAAK;YACL,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF;AA7PD,4BA6PC;sGAvKmB,QAAkB;IAClC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO;SAC/B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;SACrC,MAAM,CAAC,SAAS,CAAC;SACjB,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,QAAQ,CAAC,GAAG,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;IACjD,QAAQ,CAAC,GAAG,CAAC,8BAA8B,EAAE,aAAa,CAAC,CAAC;IAC5D,QAAQ,CAAC,GAAG,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;AAC/D,CAAC,0BAED,KAAK,gCAAc,MAAW;IAC5B,IAAI;QACF,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KACnD;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,OAAC,CAAC,QAAQ,EAAE;YAC3B,MAAM,IAAI,OAAC,CAAC,QAAQ,CAAC;gBACnB;oBACE,OAAO,EAAE,gBAAgB;oBACzB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,QAAQ,CAAC;iBACjB;gBACD,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC1B,GAAG,KAAK;oBACR,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;iBACxD,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ;QACD,MAAM,CAAC,CAAC;KACT;AACH,CAAC,6BAED,KAAK,mCAAiB,EACpB,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,GAMP;IACC,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;QAClC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,2CAA2C;QACpG,MAAM,CAAC,MAAM,CACX,OAAO,EACP,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB,KAAK;YACL,OAAO;YACP,OAAO;YACP,QAAQ;YACR,MAAM;SACP,CAAC,CACH,CAAC;QACF,cAAc,GAAG,eAAe,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,CAAC;QACvE,IAAI,cAAc,EAAE;YAClB,MAAM,CAAC,IAAI,CACT,kBAAkB,GAAG,CAAC,UAAU,CAAC,IAAI,8CAA8C,EACnF,OAAO,CACR,CAAC;YACF,MAAM;SACP;KACF;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAC5C,CAAC,iCAED,KAAK,uCAAqB,EACxB,KAAK,EACL,OAAO,EACP,MAAM,GAKP;IACC,OAAO,IAAI,CAAC,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;QAC/C,OAAO;QACP,MAAM;KACP,CAAC,CAAC;AACL,CAAC,2BAED,KAAK,iCAAe,EAClB,KAAK,EACL,OAAO,EACP,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,MAAM,GAQP;IACC,IAAI;QACF,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC/B,KAAK;YACL,MAAM;YACN,OAAO;YACP,QAAQ;YACR,MAAM;YACN,KAAK,EAAE,YAAY;SACpB,CAAC,CAAC;KACJ;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,KAAK,EAAE;YACtB,IAAA,kCAAiB,EAAC;gBAChB,MAAM;gBACN,QAAQ;gBACR,KAAK,EAAE,IAAI,2BAAkB,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;aAChD,CAAC,CAAC;SACJ;KACF;AACH,CAAC"}
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
@@ -2,45 +2,37 @@
2
2
  import { Request, Response } from "express";
3
3
  import { z } from "zod";
4
4
  import { ApiResponse } from "./api-response";
5
+ import { FlatObject, IOSchema, ProbableIntersection } from "./common-helpers";
5
6
  import { Endpoint, Handler } from "./endpoint";
6
- import { FlatObject, IOSchema, Merge } from "./common-helpers";
7
7
  import { Method, MethodsDefinition } from "./method";
8
- import { ExpressMiddleware, ExpressMiddlewareFeatures, MiddlewareDefinition } from "./middleware";
8
+ import { AnyMiddlewareDef, ExpressMiddleware, ExpressMiddlewareFeatures, MiddlewareDefinition } from "./middleware";
9
9
  import { ResultHandlerDefinition } from "./result-handler";
10
- declare type BuildProps<IN extends IOSchema, OUT extends IOSchema, MwIN, MwOUT, M extends Method> = {
10
+ declare type BuildProps<IN extends IOSchema, OUT extends IOSchema, MIN extends IOSchema | null, OPT extends FlatObject, M extends Method> = {
11
11
  input: IN;
12
12
  output: OUT;
13
- handler: Handler<z.output<Merge<IN, MwIN>>, z.input<OUT>, MwOUT>;
13
+ handler: Handler<z.output<ProbableIntersection<MIN, IN>>, z.input<OUT>, OPT>;
14
14
  description?: string;
15
15
  } & MethodsDefinition<M>;
16
- export declare class EndpointsFactory<MwIN, MwOUT, POS extends ApiResponse, NEG extends ApiResponse> {
16
+ export declare class EndpointsFactory<POS extends ApiResponse, NEG extends ApiResponse, IN extends IOSchema | null = null, OUT extends FlatObject = {}> {
17
17
  #private;
18
18
  protected resultHandler: ResultHandlerDefinition<POS, NEG>;
19
- protected middlewares: MiddlewareDefinition<any, any, any>[];
19
+ protected middlewares: AnyMiddlewareDef[];
20
20
  constructor(resultHandler: ResultHandlerDefinition<POS, NEG>);
21
- addMiddleware<IN extends IOSchema, OUT extends FlatObject>(definition: MiddlewareDefinition<IN, MwOUT, OUT>): EndpointsFactory<Merge<IN, MwIN>, MwOUT & OUT, POS, NEG>;
22
- use: <R extends Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>, S extends Response<any, Record<string, any>>, OUT extends FlatObject = {}>(middleware: ExpressMiddleware<R, S>, features?: ExpressMiddlewareFeatures<R, S, OUT> | undefined) => EndpointsFactory<MwIN, MwOUT & OUT, POS, NEG>;
23
- addExpressMiddleware<R extends Request, S extends Response, OUT extends FlatObject = {}>(middleware: ExpressMiddleware<R, S>, features?: ExpressMiddlewareFeatures<R, S, OUT>): EndpointsFactory<MwIN, MwOUT & OUT, POS, NEG>;
24
- addOptions<OUT extends FlatObject>(options: OUT): EndpointsFactory<MwIN, MwOUT & OUT, POS, NEG>;
25
- build<IN extends IOSchema, OUT extends IOSchema, M extends Method>({ input, output, handler, description, ...rest }: BuildProps<IN, OUT, MwIN, MwOUT, M>): Endpoint<IN, OUT, MwIN, MwOUT, M, POS, NEG>;
21
+ addMiddleware<AIN extends IOSchema, AOUT extends FlatObject>(definition: MiddlewareDefinition<AIN, OUT, AOUT>): EndpointsFactory<POS, NEG, ProbableIntersection<IN, AIN>, OUT & AOUT>;
22
+ use: <R extends Request<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>, S extends Response<any, Record<string, any>>, AOUT extends FlatObject = {}>(middleware: ExpressMiddleware<R, S>, features?: ExpressMiddlewareFeatures<R, S, AOUT> | undefined) => EndpointsFactory<POS, NEG, IN, OUT & AOUT>;
23
+ addExpressMiddleware<R extends Request, S extends Response, AOUT extends FlatObject = {}>(middleware: ExpressMiddleware<R, S>, features?: ExpressMiddlewareFeatures<R, S, AOUT>): EndpointsFactory<POS, NEG, IN, OUT & AOUT>;
24
+ addOptions<AOUT extends FlatObject>(options: AOUT): EndpointsFactory<POS, NEG, IN, OUT & AOUT>;
25
+ build<BIN extends IOSchema, BOUT extends IOSchema, M extends Method>({ input, handler, description, output: outputSchema, ...rest }: BuildProps<BIN, BOUT, IN, OUT, M>): Endpoint<ProbableIntersection<IN, BIN>, BOUT, OUT, M, POS, NEG>;
26
26
  }
27
- export declare const defaultEndpointsFactory: EndpointsFactory<unknown, unknown, ApiResponse<z.ZodObject<{
27
+ export declare const defaultEndpointsFactory: EndpointsFactory<ApiResponse<z.ZodObject<{
28
28
  status: z.ZodLiteral<"success">;
29
29
  data: import("./common-helpers").OutputMarker;
30
30
  }, "strip", z.ZodTypeAny, {
31
+ data?: unknown;
31
32
  status: "success";
32
- data: {
33
- [x: string]: any;
34
- [x: number]: any;
35
- [x: symbol]: any;
36
- };
37
33
  }, {
34
+ data?: unknown;
38
35
  status: "success";
39
- data: {
40
- [x: string]: any;
41
- [x: number]: any;
42
- [x: symbol]: any;
43
- };
44
36
  }> & {
45
37
  _def: z.ZodObjectDef<{
46
38
  status: z.ZodLiteral<"success">;
@@ -49,44 +41,24 @@ export declare const defaultEndpointsFactory: EndpointsFactory<unknown, unknown,
49
41
  status: z.ZodLiteral<"success">;
50
42
  data: import("./common-helpers").OutputMarker;
51
43
  }, "strip", z.ZodTypeAny, {
44
+ data?: unknown;
52
45
  status: "success";
53
- data: {
54
- [x: string]: any;
55
- [x: number]: any;
56
- [x: symbol]: any;
57
- };
58
46
  }, {
47
+ data?: unknown;
59
48
  status: "success";
60
- data: {
61
- [x: string]: any;
62
- [x: number]: any;
63
- [x: symbol]: any;
64
- };
65
49
  }>>;
66
50
  example: (example: {
51
+ data?: unknown;
67
52
  status: "success";
68
- data: {
69
- [x: string]: any;
70
- [x: number]: any;
71
- [x: symbol]: any;
72
- };
73
53
  }) => z.ZodObject<{
74
54
  status: z.ZodLiteral<"success">;
75
55
  data: import("./common-helpers").OutputMarker;
76
56
  }, "strip", z.ZodTypeAny, {
57
+ data?: unknown;
77
58
  status: "success";
78
- data: {
79
- [x: string]: any;
80
- [x: number]: any;
81
- [x: symbol]: any;
82
- };
83
59
  }, {
60
+ data?: unknown;
84
61
  status: "success";
85
- data: {
86
- [x: string]: any;
87
- [x: number]: any;
88
- [x: symbol]: any;
89
- };
90
62
  }> & any;
91
63
  }>, ApiResponse<z.ZodObject<{
92
64
  status: z.ZodLiteral<"error">;
@@ -162,5 +134,5 @@ export declare const defaultEndpointsFactory: EndpointsFactory<unknown, unknown,
162
134
  message: string;
163
135
  };
164
136
  }> & any;
165
- }>>;
137
+ }>, null, {}>;
166
138
  export {};
@@ -8,8 +8,8 @@ var _a, _EndpointsFactory_create;
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.defaultEndpointsFactory = exports.EndpointsFactory = void 0;
10
10
  const zod_1 = require("zod");
11
- const endpoint_1 = require("./endpoint");
12
11
  const common_helpers_1 = require("./common-helpers");
12
+ const endpoint_1 = require("./endpoint");
13
13
  const middleware_1 = require("./middleware");
14
14
  const mime_1 = require("./mime");
15
15
  const result_handler_1 = require("./result-handler");
@@ -18,7 +18,6 @@ class EndpointsFactory {
18
18
  this.resultHandler = resultHandler;
19
19
  this.middlewares = [];
20
20
  this.use = this.addExpressMiddleware;
21
- this.resultHandler = resultHandler;
22
21
  }
23
22
  addMiddleware(definition) {
24
23
  return __classPrivateFieldGet(EndpointsFactory, _a, "m", _EndpointsFactory_create).call(EndpointsFactory, this.middlewares.concat(definition), this.resultHandler);
@@ -46,14 +45,15 @@ class EndpointsFactory {
46
45
  middleware: async () => options,
47
46
  })), this.resultHandler);
48
47
  }
49
- build({ input, output, handler, description, ...rest }) {
48
+ build({ input, handler, description, output: outputSchema, ...rest }) {
49
+ const { middlewares, resultHandler } = this;
50
50
  return new endpoint_1.Endpoint({
51
51
  handler,
52
52
  description,
53
- middlewares: this.middlewares,
54
- inputSchema: input,
55
- outputSchema: output,
56
- resultHandler: this.resultHandler,
53
+ middlewares,
54
+ outputSchema,
55
+ resultHandler,
56
+ inputSchema: (0, common_helpers_1.getFinalEndpointInputSchema)(middlewares, input),
57
57
  mimeTypes: (0, common_helpers_1.hasUpload)(input) ? [mime_1.mimeMultipart] : [mime_1.mimeJson],
58
58
  ...rest,
59
59
  });
@@ -1 +1 @@
1
- {"version":3,"file":"endpoints-factory.js","sourceRoot":"","sources":["../src/endpoints-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoints-factory.js","sourceRoot":"","sources":["../src/endpoints-factory.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1 +1 @@
1
- {"version":3,"file":"extend-zod.js","sourceRoot":"","sources":["../src/extend-zod.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6BAA8B;AAC9B,qDAA6C;AAC7C,uDAA+C;AAC/C,+CAAwC;AACxC,mDAA4C;AAE5C,sCAAoB;AACP,QAAA,IAAI,GAAG,qBAAO,CAAC,MAAM,CAAC;AACtB,QAAA,MAAM,GAAG,yBAAS,CAAC,MAAM,CAAC;AAEvC;;;;KAIK;AACQ,QAAA,IAAI,GAAG,aAAO,CAAC,MAAM,CAAC;AACtB,QAAA,MAAM,GAAG,0BAAS,CAAC,MAAM,CAAC;AAC1B,QAAA,OAAO,GAAG,4BAAU,CAAC,MAAM,CAAC"}
1
+ {"version":3,"file":"extend-zod.js","sourceRoot":"","sources":["../src/extend-zod.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,6BAA8B;AAC9B,qDAA6C;AAC7C,uDAA+C;AAC/C,+CAAwC;AACxC,mDAA4C;AAE5C,sCAAoB;AACP,QAAA,IAAI,GAAG,qBAAO,CAAC,MAAM,CAAC;AACtB,QAAA,MAAM,GAAG,yBAAS,CAAC,MAAM,CAAC;AAEvC;;;;KAIK;AACQ,QAAA,IAAI,GAAG,aAAO,CAAC,MAAM,CAAC;AACtB,QAAA,MAAM,GAAG,0BAAS,CAAC,MAAM,CAAC;AAC1B,QAAA,OAAO,GAAG,4BAAU,CAAC,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2D;AAAlD,2GAAA,YAAY,OAAA;AACrB,uCAKoB;AAJlB,4GAAA,gBAAgB,OAAA;AAMlB,yDAAgF;AAAvE,qHAAA,gBAAgB,OAAA;AAAE,4HAAA,uBAAuB,OAAA;AAClD,mDAAoE;AAArC,4GAAA,UAAU,OAAA;AACzC,+CAAmD;AAA1C,iHAAA,iBAAiB,OAAA;AAC1B,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,2CAAgD;AAAvC,8GAAA,gBAAgB,OAAA;AACzB,mDAA6E;AAApE,qHAAA,mBAAmB,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAClD,yDAAsD;AAA7C,oHAAA,eAAe,OAAA;AACxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAEpB,mCAAuD;AAA9C,sGAAA,YAAY,OAAA;AAAE,uGAAA,aAAa,OAAA;AACpC,uCAAqC;AAA5B,mGAAA,OAAO,OAAA;AAChB,mCAA4E;AAAnE,sGAAA,YAAY,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AAAE,sGAAA,YAAY,OAAA;AACzD,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;AAErB,gDAAkC;AAGR,cAAC;AAF3B,8DAA0C;AAEjC,0BAFF,qBAAe,CAEE"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA2D;AAAlD,2GAAA,YAAY,OAAA;AACrB,uCAKoB;AAJlB,4GAAA,gBAAgB,OAAA;AAMlB,yDAAgF;AAAvE,qHAAA,gBAAgB,OAAA;AAAE,4HAAA,uBAAuB,OAAA;AAClD,mDAAoE;AAArC,4GAAA,UAAU,OAAA;AACzC,+CAAmD;AAA1C,iHAAA,iBAAiB,OAAA;AAC1B,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,2CAAgD;AAAvC,8GAAA,gBAAgB,OAAA;AACzB,mDAA6E;AAApE,qHAAA,mBAAmB,OAAA;AAAE,sHAAA,oBAAoB,OAAA;AAClD,yDAAsD;AAA7C,oHAAA,eAAe,OAAA;AACxB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAEpB,mCAAuD;AAA9C,sGAAA,YAAY,OAAA;AAAE,uGAAA,aAAa,OAAA;AACpC,uCAAqC;AAA5B,mGAAA,OAAO,OAAA;AAChB,mCAA4E;AAAnE,sGAAA,YAAY,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AAAE,sGAAA,YAAY,OAAA;AACzD,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;AAErB,gDAAkC;AAGR,cAAC;AAF3B,8DAA0C;AAEjC,0BAFF,qBAAe,CAEE"}
@@ -15,6 +15,7 @@ export interface MiddlewareDefinition<IN extends IOSchema, OPT, OUT extends Flat
15
15
  input: IN;
16
16
  middleware: Middleware<z.output<IN>, OPT, OUT>;
17
17
  }
18
+ export declare type AnyMiddlewareDef = MiddlewareDefinition<IOSchema, any, any>;
18
19
  export declare const createMiddleware: <IN extends IOSchema, OPT, OUT extends FlatObject>(definition: MiddlewareDefinition<IN, OPT, OUT>) => MiddlewareDefinition<IN, OPT, OUT>;
19
20
  export declare type ExpressMiddleware<R extends Request, S extends Response> = (request: R, response: S, next: (error?: any) => void) => void | Promise<void>;
20
21
  export interface ExpressMiddlewareFeatures<R extends Request, S extends Response, OUT extends FlatObject> {
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;;AA2BO,MAAM,gBAAgB,GAAG,CAK9B,UAA8C,EAC9C,EAAE,CAAC,UAAU,CAAC;AANH,QAAA,gBAAgB,oBAMb"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":";;;AA6BO,MAAM,gBAAgB,GAAG,CAK9B,UAA8C,EAC9C,EAAE,CAAC,UAAU,CAAC;AANH,QAAA,gBAAgB,oBAMb"}
@@ -26,6 +26,7 @@ export declare const depictAny: DepictHelper<z.ZodAny>;
26
26
  export declare const depictUpload: DepictHelper<ZodUpload>;
27
27
  export declare const depictFile: DepictHelper<ZodFile>;
28
28
  export declare const depictUnion: DepictHelper<z.ZodUnion<[z.ZodTypeAny, ...z.ZodTypeAny[]]>>;
29
+ export declare const depictDiscriminatedUnion: DepictHelper<z.ZodDiscriminatedUnion<string, z.Primitive, z.ZodObject<any>>>;
29
30
  export declare const depictIntersection: DepictHelper<z.ZodIntersection<z.ZodTypeAny, z.ZodTypeAny>>;
30
31
  export declare const depictOptionalOrNullable: DepictHelper<z.ZodOptional<any> | z.ZodNullable<any>>;
31
32
  export declare const depictEnum: DepictHelper<z.ZodEnum<any> | z.ZodNativeEnum<any>>;
@@ -49,6 +50,12 @@ export declare const depictObjectProperties: ({ schema: { shape }, isResponse, }
49
50
  export declare const depictEffect: DepictHelper<z.ZodEffects<z.ZodTypeAny>>;
50
51
  export declare const depictIOExamples: <T extends IOSchema>(schema: T, isResponse: boolean, omitProps?: string[]) => MediaExamples;
51
52
  export declare const depictIOParamExamples: <T extends IOSchema>(schema: T, isResponse: boolean, param: string) => MediaExamples;
53
+ export declare function extractObjectSchema(subject: IOSchema): z.AnyZodObject | (z.AnyZodObject & {
54
+ _def: z.ZodObjectDef<any, any, any> & import("./metadata").MetaDef<z.AnyZodObject>;
55
+ example: (example: {
56
+ [x: string]: any;
57
+ }) => z.AnyZodObject & any;
58
+ });
52
59
  export declare const depictRequestParams: ({ path, method, endpoint, inputSources, }: ReqResDepictHelperCommonProps & {
53
60
  inputSources: InputSources[Method];
54
61
  }) => ParameterObject[];