@openapi-qraft/plugin 2.5.0-beta.1 → 2.5.0-beta.3

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
@@ -1,5 +1,17 @@
1
1
  # @openapi-qraft/plugin
2
2
 
3
+ ## 2.5.0-beta.3
4
+
5
+ ## 2.5.0-beta.2
6
+
7
+ ### Patch Changes
8
+
9
+ - ece9c58: Generate types for empty responses
10
+
11
+ Now, for both successful and error responses, we generate types for all possible response outcomes.
12
+ For instance, if a 204 (No Content) response is possible, we now explicitly generate a type for it
13
+ (represented as `undefined` in the generated code) instead of omitting it.
14
+
3
15
  ## 2.5.0-beta.1
4
16
 
5
17
  ## 2.5.0-beta.0
@@ -25,9 +25,11 @@ export type OpenAPISchemaType = {
25
25
  responses: {
26
26
  [statusCode in number | 'default']: {
27
27
  description: string;
28
- content: {
28
+ content?: {
29
29
  [contentType: string]: {
30
30
  schema: any;
31
+ } | {
32
+ type: string;
31
33
  };
32
34
  };
33
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAPISchemaType.d.ts","sourceRoot":"","sources":["../../../src/lib/open-api/OpenAPISchemaType.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG;YACd,CAAC,MAAM,EAAE,MAAM,GAAG;gBAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;gBAChB,WAAW,CAAC,EAAE,MAAM,CAAC;gBACrB,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,WAAW,CAAC,EAAE,MAAM,CAAC;gBACrB,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxB,UAAU,CAAC,EAAE,OAAO,CAAC;gBACrB,WAAW,CAAC,EAAE;oBACZ,OAAO,CAAC,EAAE;wBACR,CAAC,WAAW,EAAE,MAAM,GAAG;4BACrB,MAAM,EAAE,GAAG,CAAC;yBACb,CAAC;qBACH,CAAC;oBACF,IAAI,CAAC,EAAE,MAAM,CAAC;oBACd,QAAQ,CAAC,EAAE,OAAO,CAAC;iBACpB,CAAC;gBACF,SAAS,EAAE;qBACR,UAAU,IAAI,MAAM,GAAG,SAAS,GAAG;wBAClC,WAAW,EAAE,MAAM,CAAC;wBACpB,OAAO,EAAE;4BACP,CAAC,WAAW,EAAE,MAAM,GAAG;gCACrB,MAAM,EAAE,GAAG,CAAC;6BACb,CAAC;yBACH,CAAC;qBACH;iBACF,CAAC;gBACF,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;aACxD,CAAC;SACH,CAAC;KACH,CAAC;IACF,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;KAC7C,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"OpenAPISchemaType.d.ts","sourceRoot":"","sources":["../../../src/lib/open-api/OpenAPISchemaType.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG;YACd,CAAC,MAAM,EAAE,MAAM,GAAG;gBAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;gBAChB,WAAW,CAAC,EAAE,MAAM,CAAC;gBACrB,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,WAAW,CAAC,EAAE,MAAM,CAAC;gBACrB,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxB,UAAU,CAAC,EAAE,OAAO,CAAC;gBACrB,WAAW,CAAC,EAAE;oBACZ,OAAO,CAAC,EAAE;wBACR,CAAC,WAAW,EAAE,MAAM,GAAG;4BACrB,MAAM,EAAE,GAAG,CAAC;yBACb,CAAC;qBACH,CAAC;oBACF,IAAI,CAAC,EAAE,MAAM,CAAC;oBACd,QAAQ,CAAC,EAAE,OAAO,CAAC;iBACpB,CAAC;gBACF,SAAS,EAAE;qBACR,UAAU,IAAI,MAAM,GAAG,SAAS,GAAG;wBAClC,WAAW,EAAE,MAAM,CAAC;wBACpB,OAAO,CAAC,EAAE;4BACR,CAAC,WAAW,EAAE,MAAM,GAChB;gCACE,MAAM,EAAE,GAAG,CAAC;6BACb,GACD;gCAAE,IAAI,EAAE,MAAM,CAAA;6BAAE,CAAC;yBACtB,CAAC;qBACH;iBACF,CAAC;gBACF,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;aACxD,CAAC;SACH,CAAC;KACH,CAAC;IACF,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;KAC7C,CAAC;CACH,CAAC"}
@@ -13,9 +13,19 @@ export type ServiceOperation = {
13
13
  description: string | undefined;
14
14
  summary: string | undefined;
15
15
  deprecated: boolean | undefined;
16
- errors: Record<string, string | undefined>;
16
+ /**
17
+ * Contains error response types like 400, 401, 404, 500, etc.
18
+ * The mapping contains status codes as keys and response types as values.
19
+ * If the response type is `null`, it typically indicates an error response with no content.
20
+ */
21
+ errors: Record<string, string[] | null | undefined>;
17
22
  requestBody: OpenAPISchemaType['paths'][string]['post']['requestBody'];
18
- success: Record<string, string | undefined>;
23
+ /**
24
+ * Contains successful response types like 200, 201, 204, etc.
25
+ * The mapping contains status codes as keys and response types as values.
26
+ * If the response type is `null`, it typically indicates a 204-like response with no content.
27
+ */
28
+ success: Record<string, string[] | null | undefined>;
19
29
  parameters: {
20
30
  name: string;
21
31
  in: 'header' | 'query' | 'cookie';
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAPIService.d.ts","sourceRoot":"","sources":["../../../src/lib/open-api/OpenAPIService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EACF,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IACvE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC5C,UAAU,EACN;QACE,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,GAAG,CAAC;QACZ,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,EAAE,GACH,SAAS,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;CACnE,CAAC"}
1
+ {"version":3,"file":"OpenAPIService.d.ts","sourceRoot":"","sources":["../../../src/lib/open-api/OpenAPIService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EACF,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,GACP,QAAQ,GACR,SAAS,GACT,MAAM,GACN,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACpD,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IACvE;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrD,UAAU,EACN;QACE,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,GAAG,CAAC;QACZ,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,EAAE,GACH,SAAS,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;CACnE,CAAC"}
@@ -1,6 +1,8 @@
1
1
  export declare const getContentMediaType: (content: {
2
2
  [contentType: string]: {
3
3
  schema: unknown;
4
+ } | {
5
+ type: unknown;
4
6
  };
5
- }) => string | undefined;
7
+ } | undefined) => string[] | null;
6
8
  //# sourceMappingURL=getContent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getContent.d.ts","sourceRoot":"","sources":["../../../src/lib/open-api/getContent.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,mBAAmB,YAAa;IAC3C,CAAC,WAAW,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5C,uBAWA,CAAC"}
1
+ {"version":3,"file":"getContent.d.ts","sourceRoot":"","sources":["../../../src/lib/open-api/getContent.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,YAE1B;IACE,CAAC,WAAW,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;CAChE,GACD,SAAS,oBAOd,CAAC"}
@@ -1,23 +1,7 @@
1
- const BASIC_MEDIA_TYPES = [
2
- 'application/json-patch+json',
3
- 'application/json',
4
- 'application/x-www-form-urlencoded',
5
- 'text/json',
6
- 'text/plain',
7
- 'multipart/form-data',
8
- 'multipart/mixed',
9
- 'multipart/related',
10
- 'multipart/batch',
11
- ];
12
1
  export const getContentMediaType = (content) => {
13
- const basicMediaTypeWithSchema = Object.keys(content)
14
- .filter((mediaType) => {
15
- const cleanMediaType = mediaType.split(';')[0].trim();
16
- return BASIC_MEDIA_TYPES.includes(cleanMediaType);
17
- })
18
- .find((mediaType) => content[mediaType]?.schema);
19
- if (basicMediaTypeWithSchema)
20
- return basicMediaTypeWithSchema;
21
- return Object.keys(content).find((mediaType) => content[mediaType]?.schema);
2
+ const mediaTypes = Object.keys(content || {});
3
+ if (!mediaTypes.length)
4
+ return null;
5
+ return mediaTypes;
22
6
  };
23
7
  //# sourceMappingURL=getContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getContent.js","sourceRoot":"","sources":["../../../src/lib/open-api/getContent.ts"],"names":[],"mappings":"AAAA,MAAM,iBAAiB,GAAG;IACxB,6BAA6B;IAC7B,kBAAkB;IAClB,mCAAmC;IACnC,WAAW;IACX,YAAY;IACZ,qBAAqB;IACrB,iBAAiB;IACjB,mBAAmB;IACnB,iBAAiB;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAEnC,EAAE,EAAE;IACH,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SAClD,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QACpB,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;IAEnD,IAAI,wBAAwB;QAAE,OAAO,wBAAwB,CAAC;IAE9D,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC,CAAC"}
1
+ {"version":3,"file":"getContent.js","sourceRoot":"","sources":["../../../src/lib/open-api/getContent.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAIa,EACb,EAAE;IACF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAE9C,IAAI,CAAC,UAAU,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEpC,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getServices.d.ts","sourceRoot":"","sources":["../../../src/lib/open-api/getServices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,OAAO,EAEL,+BAA+B,EAChC,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,cAAc,EACd,gBAAgB,IAAI,sBAAsB,EAC3C,MAAM,qBAAqB,CAAC;AAI7B,MAAM,MAAM,eAAe,GAAG,+BAA+B,GAAG,MAAM,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,eAAO,MAAM,WAAW,gBACT,iBAAiB,0CAI3B,oBAAoB,qBA4GxB,CAAC;AAEF,eAAO,MAAM,eAAe,WAClB,OAAO,KACd,MAAM,IAAI,CAAC,OAAO,oBAAoB,EAAE,MAAM,CAG9C,CAAC;AAEJ,QAAA,MAAM,oBAAoB,gFASqC,CAAC"}
1
+ {"version":3,"file":"getServices.d.ts","sourceRoot":"","sources":["../../../src/lib/open-api/getServices.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAIhE,OAAO,EAEL,+BAA+B,EAChC,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EACL,cAAc,EACd,gBAAgB,IAAI,sBAAsB,EAC3C,MAAM,qBAAqB,CAAC;AAI7B,MAAM,MAAM,eAAe,GAAG,+BAA+B,GAAG,MAAM,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,eAAO,MAAM,WAAW,gBACT,iBAAiB,0CAI3B,oBAAoB,qBA6GxB,CAAC;AAEF,eAAO,MAAM,eAAe,WAClB,OAAO,KACd,MAAM,IAAI,CAAC,OAAO,oBAAoB,EAAE,MAAM,CAG9C,CAAC;AAEJ,QAAA,MAAM,oBAAoB,gFASqC,CAAC"}
@@ -20,9 +20,6 @@ export const getServices = (openApiJson, { postfixServices = 'Service', serviceN
20
20
  }
21
21
  const methodOperation = paths[path][method];
22
22
  const { success, errors } = Object.entries(methodOperation.responses).reduce((acc, [statusCode, response]) => {
23
- if (!response.content || typeof response.content !== 'object') {
24
- return acc;
25
- }
26
23
  const statusType = statusCode !== 'default' && // See "default" response https://swagger.io/docs/specification/describing-responses/#default
27
24
  Number(statusCode) < 400
28
25
  ? 'success'
@@ -34,7 +31,7 @@ export const getServices = (openApiJson, { postfixServices = 'Service', serviceN
34
31
  [statusCode]: getContentMediaType(response.content),
35
32
  },
36
33
  };
37
- }, {});
34
+ }, { errors: {}, success: {} });
38
35
  const serviceFallbackBaseName = 'Default';
39
36
  const serviceNames = serviceNameBase === 'tags'
40
37
  ? getServiceNamesByOperationTags(paths[path][method]?.tags, serviceFallbackBaseName)
@@ -1 +1 @@
1
- {"version":3,"file":"getServices.js","sourceRoot":"","sources":["../../../src/lib/open-api/getServices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getServices.js","sourceRoot":"","sources":["../../../src/lib/open-api/getServices.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,kCAAkC,GAEnC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAKrF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAmBvE,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,WAA8B,EAC9B,EACE,eAAe,GAAG,SAAS,EAC3B,eAAe,GAAG,aAAa,MACP,EAAE,EAC5B,EAAE;IACF,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAEhC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEnD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;YAAE,SAAS;QAEjE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAE,SAAS;YAEzE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,IAAI,CACV,aAAa,IAAI,kBAAkB,MAAM,oBAAoB,CAC9D,CAAC;gBACF,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;YAE5C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CACxC,eAAe,CAAC,SAAS,CAC1B,CAAC,MAAM,CAMN,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE;gBAC9B,MAAM,UAAU,GACd,UAAU,KAAK,SAAS,IAAI,6FAA6F;oBACzH,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG;oBACtB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,QAAQ,CAAC;gBAEf,OAAO;oBACL,GAAG,GAAG;oBACN,CAAC,UAAU,CAAC,EAAE;wBACZ,GAAG,GAAG,CAAC,UAAU,CAAC;wBAClB,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC;qBACpD;iBACF,CAAC;YACJ,CAAC,EACD,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAC5B,CAAC;YAEF,MAAM,uBAAuB,GAAG,SAAS,CAAC;YAE1C,MAAM,YAAY,GAChB,eAAe,KAAK,MAAM;gBACxB,CAAC,CAAC,8BAA8B,CAC5B,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EACzB,uBAAuB,CACxB;gBACH,CAAC,CAAC,kCAAkC,CAChC,IAAI,EACJ,eAAe,EACf,uBAAuB,CACxB,CAAC;YAER,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACxB,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE;wBACjB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;wBACrB,YAAY,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE;4BAC/B,4BAA4B,EAAE,KAAK;yBACpC,CAAC,GAAG,eAAe,EAAE;wBACtB,QAAQ,EAAE,GAAG,IAAI,GAAG,eAAe,EAAE;wBACrC,YAAY,EAAE,GAAG,IAAI,GAAG,eAAe,EAAE;wBACzC,UAAU,EAAE,EAAE;qBACf,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,UAAU,CAAC,IAAI,CAAC;oBAClC,MAAM;oBACN,IAAI;oBACJ,MAAM;oBACN,IAAI,EAAE,gBAAgB,CACpB,IAAI,EACJ,MAAM,EACN,eAAe,CAAC,WAAW,EAC3B,eAAe,CAChB;oBACD,WAAW,EAAE,eAAe,CAAC,WAAW;oBACxC,OAAO,EAAE,eAAe,CAAC,OAAO;oBAChC,UAAU,EAAE,eAAe,CAAC,UAAU;oBACtC,UAAU,EAAE,iCAAiC;oBAC3C,2DAA2D;oBAC3D,eAAe,CAAC,UAAU,EAC1B,WAAW,CACZ;oBACD,WAAW,EACT,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI;wBAChC,CAAC,CAAC,uBAAuB,CACrB,eAAe,CAAC,WAAW,CAAC,IAAI,EAChC,WAAW,CACZ;wBACH,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,SAAS;oBAC/C,OAAO,EAAE,OAAO;oBAChB,QAAQ,EAAE,eAAe,CAAC,QAAQ;iBACnC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,MAAe,EACkC,EAAE,CACnD,oBAAoB,CAAC,QAAQ,CAC3B,MAA+C,CAChD,CAAC;AAEJ,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CAC8C,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const packageVersion = "2.5.0-beta.1";
1
+ export declare const packageVersion = "2.5.0-beta.3";
2
2
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // This file was generated automatically
2
- export const packageVersion = '2.5.0-beta.1';
2
+ export const packageVersion = '2.5.0-beta.3';
3
3
  //# sourceMappingURL=packageVersion.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openapi-qraft/plugin",
3
- "version": "2.5.0-beta.1",
3
+ "version": "2.5.0-beta.3",
4
4
  "packageManager": "yarn@4.0.2",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "devDependencies": {
45
45
  "@openapi-qraft/eslint-config": "1.0.1",
46
- "@openapi-qraft/test-fixtures": "1.0.1",
46
+ "@openapi-qraft/test-fixtures": "1.1.0-beta.1",
47
47
  "@types/micromatch": "^4.0.9",
48
48
  "@types/node": "^20.16.5",
49
49
  "@vitest/coverage-v8": "^3.0.5",
@@ -25,10 +25,12 @@ export type OpenAPISchemaType = {
25
25
  responses: {
26
26
  [statusCode in number | 'default']: {
27
27
  description: string;
28
- content: {
29
- [contentType: string]: {
30
- schema: any;
31
- };
28
+ content?: {
29
+ [contentType: string]:
30
+ | {
31
+ schema: any;
32
+ }
33
+ | { type: string };
32
34
  };
33
35
  };
34
36
  };
@@ -23,9 +23,19 @@ export type ServiceOperation = {
23
23
  description: string | undefined;
24
24
  summary: string | undefined;
25
25
  deprecated: boolean | undefined;
26
- errors: Record<string, string | undefined>;
26
+ /**
27
+ * Contains error response types like 400, 401, 404, 500, etc.
28
+ * The mapping contains status codes as keys and response types as values.
29
+ * If the response type is `null`, it typically indicates an error response with no content.
30
+ */
31
+ errors: Record<string, string[] | null | undefined>;
27
32
  requestBody: OpenAPISchemaType['paths'][string]['post']['requestBody'];
28
- success: Record<string, string | undefined>;
33
+ /**
34
+ * Contains successful response types like 200, 201, 204, etc.
35
+ * The mapping contains status codes as keys and response types as values.
36
+ * If the response type is `null`, it typically indicates a 204-like response with no content.
37
+ */
38
+ success: Record<string, string[] | null | undefined>;
29
39
  parameters:
30
40
  | {
31
41
  name: string;
@@ -1,26 +1,13 @@
1
- const BASIC_MEDIA_TYPES = [
2
- 'application/json-patch+json',
3
- 'application/json',
4
- 'application/x-www-form-urlencoded',
5
- 'text/json',
6
- 'text/plain',
7
- 'multipart/form-data',
8
- 'multipart/mixed',
9
- 'multipart/related',
10
- 'multipart/batch',
11
- ];
1
+ export const getContentMediaType = (
2
+ content:
3
+ | {
4
+ [contentType: string]: { schema: unknown } | { type: unknown };
5
+ }
6
+ | undefined
7
+ ) => {
8
+ const mediaTypes = Object.keys(content || {});
12
9
 
13
- export const getContentMediaType = (content: {
14
- [contentType: string]: { schema: unknown };
15
- }) => {
16
- const basicMediaTypeWithSchema = Object.keys(content)
17
- .filter((mediaType) => {
18
- const cleanMediaType = mediaType.split(';')[0].trim();
19
- return BASIC_MEDIA_TYPES.includes(cleanMediaType);
20
- })
21
- .find((mediaType) => content[mediaType]?.schema);
10
+ if (!mediaTypes.length) return null;
22
11
 
23
- if (basicMediaTypeWithSchema) return basicMediaTypeWithSchema;
24
-
25
- return Object.keys(content).find((mediaType) => content[mediaType]?.schema);
12
+ return mediaTypes;
26
13
  };
@@ -59,12 +59,13 @@ export const getServices = (
59
59
 
60
60
  const { success, errors } = Object.entries(
61
61
  methodOperation.responses
62
- ).reduce(
62
+ ).reduce<
63
+ Record<
64
+ 'errors' | 'success',
65
+ Record<string, string[] | null | undefined>
66
+ >
67
+ >(
63
68
  (acc, [statusCode, response]) => {
64
- if (!response.content || typeof response.content !== 'object') {
65
- return acc;
66
- }
67
-
68
69
  const statusType =
69
70
  statusCode !== 'default' && // See "default" response https://swagger.io/docs/specification/describing-responses/#default
70
71
  Number(statusCode) < 400
@@ -79,7 +80,7 @@ export const getServices = (
79
80
  },
80
81
  };
81
82
  },
82
- {} as Record<'errors' | 'success', Record<string, string | undefined>>
83
+ { errors: {}, success: {} }
83
84
  );
84
85
 
85
86
  const serviceFallbackBaseName = 'Default';
@@ -1,2 +1,2 @@
1
1
  // This file was generated automatically
2
- export const packageVersion = '2.5.0-beta.1';
2
+ export const packageVersion = '2.5.0-beta.3';