@klerick/json-api-nestjs 10.0.0-beta.8 → 10.0.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.
Files changed (153) hide show
  1. package/CHANGELOG.md +167 -0
  2. package/README.md +299 -23
  3. package/package.json +4 -8
  4. package/src/index.d.ts +2 -2
  5. package/src/index.js +3 -1
  6. package/src/index.js.map +1 -1
  7. package/src/lib/constants/di.d.ts +1 -0
  8. package/src/lib/constants/di.js +2 -1
  9. package/src/lib/constants/di.js.map +1 -1
  10. package/src/lib/json-api.module.js +3 -2
  11. package/src/lib/json-api.module.js.map +1 -1
  12. package/src/lib/modules/atomic-operation/atomic-operation.module.d.ts +1 -2
  13. package/src/lib/modules/atomic-operation/atomic-operation.module.js +6 -5
  14. package/src/lib/modules/atomic-operation/atomic-operation.module.js.map +1 -1
  15. package/src/lib/modules/atomic-operation/controllers/operation.controller.js +4 -4
  16. package/src/lib/modules/atomic-operation/controllers/operation.controller.js.map +1 -1
  17. package/src/lib/modules/atomic-operation/factory/map-controller-entity.d.ts +1 -2
  18. package/src/lib/modules/atomic-operation/factory/map-controller-entity.js +8 -7
  19. package/src/lib/modules/atomic-operation/factory/map-controller-entity.js.map +1 -1
  20. package/src/lib/modules/atomic-operation/pipes/input-operation.pipe.js.map +1 -1
  21. package/src/lib/modules/atomic-operation/service/execute.service.d.ts +13 -3
  22. package/src/lib/modules/atomic-operation/service/execute.service.js +80 -33
  23. package/src/lib/modules/atomic-operation/service/execute.service.js.map +1 -1
  24. package/src/lib/modules/atomic-operation/service/explorer.service.js +10 -6
  25. package/src/lib/modules/atomic-operation/service/explorer.service.js.map +1 -1
  26. package/src/lib/modules/atomic-operation/service/swagger.service.js +6 -6
  27. package/src/lib/modules/atomic-operation/service/swagger.service.js.map +1 -1
  28. package/src/lib/modules/atomic-operation/utils/zod/zod-helper.d.ts +14 -7
  29. package/src/lib/modules/atomic-operation/utils/zod/zod-helper.js +12 -9
  30. package/src/lib/modules/atomic-operation/utils/zod/zod-helper.js.map +1 -1
  31. package/src/lib/modules/mixin/config/bindings.js +20 -0
  32. package/src/lib/modules/mixin/config/bindings.js.map +1 -1
  33. package/src/lib/modules/mixin/controllers/json-base.controller.d.ts +5 -5
  34. package/src/lib/modules/mixin/controllers/json-base.controller.js +5 -5
  35. package/src/lib/modules/mixin/controllers/json-base.controller.js.map +1 -1
  36. package/src/lib/modules/mixin/decorators/index.d.ts +1 -0
  37. package/src/lib/modules/mixin/decorators/index.js +1 -0
  38. package/src/lib/modules/mixin/decorators/index.js.map +1 -1
  39. package/src/lib/modules/mixin/decorators/json-api-response-from/json-api-response-from.decorator.d.ts +19 -0
  40. package/src/lib/modules/mixin/decorators/json-api-response-from/json-api-response-from.decorator.js +35 -0
  41. package/src/lib/modules/mixin/decorators/json-api-response-from/json-api-response-from.decorator.js.map +1 -0
  42. package/src/lib/modules/mixin/factory/zod-validate.factory.d.ts +2 -1
  43. package/src/lib/modules/mixin/factory/zod-validate.factory.js +5 -1
  44. package/src/lib/modules/mixin/factory/zod-validate.factory.js.map +1 -1
  45. package/src/lib/modules/mixin/helpers/bind-controller.js +4 -1
  46. package/src/lib/modules/mixin/helpers/bind-controller.js.map +1 -1
  47. package/src/lib/modules/mixin/helpers/utils.d.ts +2 -0
  48. package/src/lib/modules/mixin/helpers/utils.js +10 -0
  49. package/src/lib/modules/mixin/helpers/utils.js.map +1 -1
  50. package/src/lib/modules/mixin/mixin.module.js +1 -0
  51. package/src/lib/modules/mixin/mixin.module.js.map +1 -1
  52. package/src/lib/modules/mixin/pipe/index.d.ts +1 -0
  53. package/src/lib/modules/mixin/pipe/index.js +5 -0
  54. package/src/lib/modules/mixin/pipe/index.js.map +1 -1
  55. package/src/lib/modules/mixin/pipe/meta-extractor/index.d.ts +1 -0
  56. package/src/lib/modules/mixin/pipe/meta-extractor/index.js +5 -0
  57. package/src/lib/modules/mixin/pipe/meta-extractor/index.js.map +1 -0
  58. package/src/lib/modules/mixin/pipe/meta-extractor/meta-extractor.pipe.d.ts +6 -0
  59. package/src/lib/modules/mixin/pipe/meta-extractor/meta-extractor.pipe.js +27 -0
  60. package/src/lib/modules/mixin/pipe/meta-extractor/meta-extractor.pipe.js.map +1 -0
  61. package/src/lib/modules/mixin/service/json-api-transformer.service.d.ts +2 -2
  62. package/src/lib/modules/mixin/service/json-api-transformer.service.js.map +1 -1
  63. package/src/lib/modules/mixin/swagger/error-response-model.d.ts +11 -0
  64. package/src/lib/modules/mixin/swagger/error-response-model.js +63 -0
  65. package/src/lib/modules/mixin/swagger/error-response-model.js.map +1 -0
  66. package/src/lib/modules/mixin/swagger/method/delete-one.js +3 -3
  67. package/src/lib/modules/mixin/swagger/method/delete-one.js.map +1 -1
  68. package/src/lib/modules/mixin/swagger/method/delete-relationship.js +6 -6
  69. package/src/lib/modules/mixin/swagger/method/delete-relationship.js.map +1 -1
  70. package/src/lib/modules/mixin/swagger/method/get-all.js +9 -39
  71. package/src/lib/modules/mixin/swagger/method/get-all.js.map +1 -1
  72. package/src/lib/modules/mixin/swagger/method/get-one.js +5 -5
  73. package/src/lib/modules/mixin/swagger/method/get-one.js.map +1 -1
  74. package/src/lib/modules/mixin/swagger/method/get-relationship.js +5 -4
  75. package/src/lib/modules/mixin/swagger/method/get-relationship.js.map +1 -1
  76. package/src/lib/modules/mixin/swagger/method/patch-one.js +5 -5
  77. package/src/lib/modules/mixin/swagger/method/patch-one.js.map +1 -1
  78. package/src/lib/modules/mixin/swagger/method/patch-relationship.js +7 -7
  79. package/src/lib/modules/mixin/swagger/method/patch-relationship.js.map +1 -1
  80. package/src/lib/modules/mixin/swagger/method/post-one.js +5 -5
  81. package/src/lib/modules/mixin/swagger/method/post-one.js.map +1 -1
  82. package/src/lib/modules/mixin/swagger/method/post-relationship.js +7 -7
  83. package/src/lib/modules/mixin/swagger/method/post-relationship.js.map +1 -1
  84. package/src/lib/modules/mixin/swagger/open-api-types.d.ts +18 -0
  85. package/src/lib/modules/mixin/swagger/open-api-types.js +3 -0
  86. package/src/lib/modules/mixin/swagger/open-api-types.js.map +1 -0
  87. package/src/lib/modules/mixin/swagger/swagger-bind.service.d.ts +1 -0
  88. package/src/lib/modules/mixin/swagger/swagger-bind.service.js +52 -13
  89. package/src/lib/modules/mixin/swagger/swagger-bind.service.js.map +1 -1
  90. package/src/lib/modules/mixin/swagger/utils.d.ts +17 -142
  91. package/src/lib/modules/mixin/swagger/utils.js +178 -124
  92. package/src/lib/modules/mixin/swagger/utils.js.map +1 -1
  93. package/src/lib/modules/mixin/zod/index.d.ts +1 -1
  94. package/src/lib/modules/mixin/zod/index.js +4 -0
  95. package/src/lib/modules/mixin/zod/index.js.map +1 -1
  96. package/src/lib/modules/mixin/zod/map-transform-to-json-shema.d.ts +2 -0
  97. package/src/lib/modules/mixin/zod/map-transform-to-json-shema.js +10 -0
  98. package/src/lib/modules/mixin/zod/map-transform-to-json-shema.js.map +1 -1
  99. package/src/lib/modules/mixin/zod/zod-input-patch-relationship-schema/index.d.ts +8 -0
  100. package/src/lib/modules/mixin/zod/zod-input-patch-relationship-schema/index.js +8 -3
  101. package/src/lib/modules/mixin/zod/zod-input-patch-relationship-schema/index.js.map +1 -1
  102. package/src/lib/modules/mixin/zod/zod-input-patch-schema/index.d.ts +14 -3
  103. package/src/lib/modules/mixin/zod/zod-input-patch-schema/index.js +1 -0
  104. package/src/lib/modules/mixin/zod/zod-input-patch-schema/index.js.map +1 -1
  105. package/src/lib/modules/mixin/zod/zod-input-post-relationship-schema/index.d.ts +1 -0
  106. package/src/lib/modules/mixin/zod/zod-input-post-relationship-schema/index.js +1 -0
  107. package/src/lib/modules/mixin/zod/zod-input-post-relationship-schema/index.js.map +1 -1
  108. package/src/lib/modules/mixin/zod/zod-input-post-schema/index.d.ts +16 -6
  109. package/src/lib/modules/mixin/zod/zod-input-post-schema/index.js +2 -11
  110. package/src/lib/modules/mixin/zod/zod-input-post-schema/index.js.map +1 -1
  111. package/src/lib/modules/mixin/zod/zod-input-query-schema/fields.d.ts +8 -5
  112. package/src/lib/modules/mixin/zod/zod-input-query-schema/fields.js +16 -12
  113. package/src/lib/modules/mixin/zod/zod-input-query-schema/fields.js.map +1 -1
  114. package/src/lib/modules/mixin/zod/zod-input-query-schema/filter.d.ts +76 -6
  115. package/src/lib/modules/mixin/zod/zod-input-query-schema/filter.js +32 -10
  116. package/src/lib/modules/mixin/zod/zod-input-query-schema/filter.js.map +1 -1
  117. package/src/lib/modules/mixin/zod/zod-input-query-schema/index.d.ts +40 -15
  118. package/src/lib/modules/mixin/zod/zod-input-query-schema/index.js +3 -1
  119. package/src/lib/modules/mixin/zod/zod-input-query-schema/index.js.map +1 -1
  120. package/src/lib/modules/mixin/zod/zod-query-schema/fields.d.ts +1 -1
  121. package/src/lib/modules/mixin/zod/zod-query-schema/fields.js +5 -4
  122. package/src/lib/modules/mixin/zod/zod-query-schema/fields.js.map +1 -1
  123. package/src/lib/modules/mixin/zod/zod-query-schema/filter.d.ts +4 -2
  124. package/src/lib/modules/mixin/zod/zod-query-schema/filter.js +19 -8
  125. package/src/lib/modules/mixin/zod/zod-query-schema/filter.js.map +1 -1
  126. package/src/lib/modules/mixin/zod/zod-query-schema/include.d.ts +9 -2
  127. package/src/lib/modules/mixin/zod/zod-query-schema/include.js +2 -1
  128. package/src/lib/modules/mixin/zod/zod-query-schema/include.js.map +1 -1
  129. package/src/lib/modules/mixin/zod/zod-query-schema/sort.d.ts +2 -2
  130. package/src/lib/modules/mixin/zod/zod-query-schema/sort.js +5 -4
  131. package/src/lib/modules/mixin/zod/zod-query-schema/sort.js.map +1 -1
  132. package/src/lib/modules/mixin/zod/zod-share/attributes.d.ts +12 -6
  133. package/src/lib/modules/mixin/zod/zod-share/attributes.js +12 -7
  134. package/src/lib/modules/mixin/zod/zod-share/attributes.js.map +1 -1
  135. package/src/lib/modules/mixin/zod/zod-share/id.d.ts +12 -0
  136. package/src/lib/modules/mixin/zod/zod-share/id.js +17 -0
  137. package/src/lib/modules/mixin/zod/zod-share/id.js.map +1 -1
  138. package/src/lib/modules/mixin/zod/zod-share/index.d.ts +1 -0
  139. package/src/lib/modules/mixin/zod/zod-share/index.js +1 -0
  140. package/src/lib/modules/mixin/zod/zod-share/index.js.map +1 -1
  141. package/src/lib/modules/mixin/zod/zod-share/meta.d.ts +11 -0
  142. package/src/lib/modules/mixin/zod/zod-share/meta.js +15 -0
  143. package/src/lib/modules/mixin/zod/zod-share/meta.js.map +1 -0
  144. package/src/lib/modules/mixin/zod/zod-share/page.d.ts +2 -2
  145. package/src/lib/modules/mixin/zod/zod-utils.d.ts +2 -0
  146. package/src/lib/modules/mixin/zod/zod-utils.js +20 -0
  147. package/src/lib/modules/mixin/zod/zod-utils.js.map +1 -1
  148. package/src/lib/types/entity-param.type.d.ts +10 -9
  149. package/src/lib/types/entity-param.type.js +13 -0
  150. package/src/lib/types/entity-param.type.js.map +1 -1
  151. package/src/lib/types/module-options.types.d.ts +1 -0
  152. package/src/lib/utils/module-helper.js +1 -0
  153. package/src/lib/utils/module-helper.js.map +1 -1
@@ -2,10 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.postOne = postOne;
4
4
  const swagger_1 = require("@nestjs/swagger");
5
- const zod_1 = require("zod");
6
5
  const utils_1 = require("../utils");
7
- const zod_2 = require("../../zod");
6
+ const zod_1 = require("../../zod");
8
7
  const decorators_1 = require("../../decorators");
8
+ const error_response_model_1 = require("../error-response-model");
9
9
  function postOne(controller, descriptor, entity, mapEntity, methodName) {
10
10
  const entityName = entity.name;
11
11
  const readOnlyProps = (0, decorators_1.getJsonApiReadOnlyFields)(entity);
@@ -16,7 +16,7 @@ function postOne(controller, descriptor, entity, mapEntity, methodName) {
16
16
  })(controller, methodName, descriptor);
17
17
  (0, swagger_1.ApiBody)({
18
18
  description: `Json api schema for new "${entityName}" item`,
19
- schema: zod_1.z.toJSONSchema((0, zod_2.zodPost)(mapEntity, readOnlyProps, immutableProps), utils_1.zodToJSONSchemaParams),
19
+ schema: (0, utils_1.zodToOpenApiSchema)((0, zod_1.zodPost)(mapEntity, readOnlyProps, immutableProps)),
20
20
  required: true,
21
21
  })(controller, methodName, descriptor);
22
22
  (0, swagger_1.ApiResponse)({
@@ -27,12 +27,12 @@ function postOne(controller, descriptor, entity, mapEntity, methodName) {
27
27
  (0, swagger_1.ApiResponse)({
28
28
  status: 400,
29
29
  description: 'Wrong body parameters',
30
- schema: utils_1.errorSchema,
30
+ schema: { $ref: (0, swagger_1.getSchemaPath)(error_response_model_1.JsonApiErrorResponseModel) },
31
31
  })(controller, methodName, descriptor);
32
32
  (0, swagger_1.ApiResponse)({
33
33
  status: 422,
34
34
  description: 'Unprocessable data',
35
- schema: utils_1.errorSchema,
35
+ schema: { $ref: (0, swagger_1.getSchemaPath)(error_response_model_1.JsonApiErrorResponseModel) },
36
36
  })(controller, methodName, descriptor);
37
37
  }
38
38
  //# sourceMappingURL=post-one.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-one.js","sourceRoot":"","sources":["../../../../../../../../../../libs/json-api/json-api-nestjs/src/lib/modules/mixin/swagger/method/post-one.ts"],"names":[],"mappings":";;AAmBA,0BA+CC;AAlED,6CAAqE;AACrE,6BAAwB;AAQxB,oCAIkB;AAClB,mCAAoC;AAEpC,iDAAuF;AAGvF,SAAgB,OAAO,CACrB,UAAqB,EACrB,UAA8B,EAC9B,MAAsB,EACtB,SAA0C,EAC1C,UAAkB;IAElB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAE/B,MAAM,aAAa,GAAG,IAAA,qCAAwB,EAC5C,MAAM,CAC4B,CAAC;IACrC,MAAM,cAAc,GAAG,IAAA,sCAAyB,EAC9C,MAAM,CAC6B,CAAC;IAEtC,IAAA,sBAAY,EAAC;QACX,OAAO,EAAE,4BAA4B,UAAU,GAAG;QAClD,WAAW,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU,EAAE;KAC5D,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,iBAAO,EAAC;QACN,WAAW,EAAE,4BAA4B,UAAU,QAAQ;QAC3D,MAAM,EAAE,OAAC,CAAC,YAAY,CACpB,IAAA,aAAO,EAAC,SAAS,EAAE,aAAa,EAAE,cAAc,CAAC,EACjD,6BAAqB,CACY;QACnC,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qBAAqB,UAAU,oBAAoB;QAChE,MAAM,EAAE,IAAA,0BAAkB,EAAC,MAAM,EAAE,SAAS,CAAC;KAC9C,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,uBAAuB;QACpC,MAAM,EAAE,mBAAW;KACpB,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,oBAAoB;QACjC,MAAM,EAAE,mBAAW;KACpB,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"post-one.js","sourceRoot":"","sources":["../../../../../../../../../../libs/json-api/json-api-nestjs/src/lib/modules/mixin/swagger/method/post-one.ts"],"names":[],"mappings":";;AAmBA,0BA4CC;AA/DD,6CAKyB;AAIzB,oCAGkB;AAClB,mCAAoC;AAEpC,iDAAuF;AAEvF,kEAAoE;AAEpE,SAAgB,OAAO,CACrB,UAAqB,EACrB,UAA8B,EAC9B,MAAsB,EACtB,SAA0C,EAC1C,UAAkB;IAElB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAE/B,MAAM,aAAa,GAAG,IAAA,qCAAwB,EAC5C,MAAM,CAC4B,CAAC;IACrC,MAAM,cAAc,GAAG,IAAA,sCAAyB,EAC9C,MAAM,CAC6B,CAAC;IAEtC,IAAA,sBAAY,EAAC;QACX,OAAO,EAAE,4BAA4B,UAAU,GAAG;QAClD,WAAW,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU,EAAE;KAC5D,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,iBAAO,EAAC;QACN,WAAW,EAAE,4BAA4B,UAAU,QAAQ;QAC3D,MAAM,EAAE,IAAA,0BAAkB,EAAC,IAAA,aAAO,EAAC,SAAS,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAC7E,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qBAAqB,UAAU,oBAAoB;QAChE,MAAM,EAAE,IAAA,0BAAkB,EAAC,MAAM,EAAE,SAAS,CAAC;KAC9C,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,uBAAuB;QACpC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAA,uBAAa,EAAC,gDAAyB,CAAC,EAAE;KAC3D,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,oBAAoB;QACjC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAA,uBAAa,EAAC,gDAAyB,CAAC,EAAE;KAC3D,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC"}
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.postRelationship = postRelationship;
4
- const zod_1 = require("zod");
5
4
  const swagger_1 = require("@nestjs/swagger");
6
5
  const utils_1 = require("../utils");
7
- const zod_2 = require("../../zod");
6
+ const zod_1 = require("../../zod");
8
7
  const types_1 = require("../../../../types");
8
+ const error_response_model_1 = require("../error-response-model");
9
9
  function postRelationship(controller, descriptor, entity, mapEntity, methodName) {
10
10
  const entityName = entity.name;
11
11
  const { relations, primaryColumnType } = mapEntity.getParamMap(entity);
@@ -24,7 +24,7 @@ function postRelationship(controller, descriptor, entity, mapEntity, methodName)
24
24
  })(controller, methodName, descriptor);
25
25
  (0, swagger_1.ApiBody)({
26
26
  description: `Json api schema for update "${entityName}" item`,
27
- schema: zod_1.z.toJSONSchema(zod_2.zodPatchRelationship),
27
+ schema: (0, utils_1.zodToOpenApiSchema)(zod_1.zodPatchRelationship),
28
28
  required: true,
29
29
  })(controller, methodName, descriptor);
30
30
  (0, swagger_1.ApiOperation)({
@@ -33,23 +33,23 @@ function postRelationship(controller, descriptor, entity, mapEntity, methodName)
33
33
  })(controller, methodName, descriptor);
34
34
  (0, swagger_1.ApiResponse)({
35
35
  status: 200,
36
- schema: utils_1.schemaTypeForRelation,
36
+ schema: utils_1.schemaTypeForRelationRef,
37
37
  description: `Item/s of relation for "${entityName}" has been created`,
38
38
  })(controller, methodName, descriptor);
39
39
  (0, swagger_1.ApiResponse)({
40
40
  status: 400,
41
41
  description: 'Wrong url parameters',
42
- schema: utils_1.errorSchema,
42
+ schema: { $ref: (0, swagger_1.getSchemaPath)(error_response_model_1.JsonApiErrorResponseModel) },
43
43
  })(controller, methodName, descriptor);
44
44
  (0, swagger_1.ApiResponse)({
45
45
  status: 422,
46
46
  description: 'Incorrect type for relation',
47
- schema: utils_1.errorSchema,
47
+ schema: { $ref: (0, swagger_1.getSchemaPath)(error_response_model_1.JsonApiErrorResponseModel) },
48
48
  })(controller, methodName, descriptor);
49
49
  (0, swagger_1.ApiResponse)({
50
50
  status: 404,
51
51
  description: 'Resource not found ',
52
- schema: utils_1.errorSchema,
52
+ schema: { $ref: (0, swagger_1.getSchemaPath)(error_response_model_1.JsonApiErrorResponseModel) },
53
53
  })(controller, methodName, descriptor);
54
54
  }
55
55
  //# sourceMappingURL=post-relationship.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-relationship.js","sourceRoot":"","sources":["../../../../../../../../../../libs/json-api/json-api-nestjs/src/lib/modules/mixin/swagger/method/post-relationship.ts"],"names":[],"mappings":";;AAcA,4CA8DC;AA3ED,6BAAwB;AAKxB,6CAA+E;AAG/E,oCAA8D;AAC9D,mCAAiD;AACjD,6CAA8C;AAG9C,SAAgB,gBAAgB,CAC9B,UAAqB,EACrB,UAA8B,EAC9B,MAAsB,EACtB,SAA0C,EAC1C,UAAkB;IAElB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAE/B,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvE,IAAA,kBAAQ,EAAC;QACP,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,iBAAiB,KAAK,iBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QACnE,WAAW,EAAE,mBAAmB,UAAU,GAAG;KAC9C,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,kBAAQ,EAAC;QACP,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,SAAgB;QACtB,WAAW,EAAE,8BAA8B,UAAU,GAAG;KACzD,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,iBAAO,EAAC;QACN,WAAW,EAAE,+BAA+B,UAAU,QAAQ;QAC9D,MAAM,EAAE,OAAC,CAAC,YAAY,CAAC,0BAAoB,CAExB;QACnB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,sBAAY,EAAC;QACX,OAAO,EAAE,yCAAyC,UAAU,GAAG;QAC/D,WAAW,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU,EAAE;KAC5D,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,6BAAqB;QAC7B,WAAW,EAAE,2BAA2B,UAAU,oBAAoB;KACvE,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,sBAAsB;QACnC,MAAM,EAAE,mBAAW;KACpB,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,6BAA6B;QAC1C,MAAM,EAAE,mBAAW;KACpB,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qBAAqB;QAClC,MAAM,EAAE,mBAAW;KACpB,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"post-relationship.js","sourceRoot":"","sources":["../../../../../../../../../../libs/json-api/json-api-nestjs/src/lib/modules/mixin/swagger/method/post-relationship.ts"],"names":[],"mappings":";;AAgBA,4CA4DC;AA3ED,6CAMyB;AAGzB,oCAAwE;AACxE,mCAAiD;AACjD,6CAA8C;AAE9C,kEAAoE;AAEpE,SAAgB,gBAAgB,CAC9B,UAAqB,EACrB,UAA8B,EAC9B,MAAsB,EACtB,SAA0C,EAC1C,UAAkB;IAElB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;IAE/B,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvE,IAAA,kBAAQ,EAAC;QACP,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,iBAAiB,KAAK,iBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;QACnE,WAAW,EAAE,mBAAmB,UAAU,GAAG;KAC9C,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,kBAAQ,EAAC;QACP,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,SAAgB;QACtB,WAAW,EAAE,8BAA8B,UAAU,GAAG;KACzD,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,iBAAO,EAAC;QACN,WAAW,EAAE,+BAA+B,UAAU,QAAQ;QAC9D,MAAM,EAAE,IAAA,0BAAkB,EAAC,0BAAoB,CAAC;QAChD,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,sBAAY,EAAC;QACX,OAAO,EAAE,yCAAyC,UAAU,GAAG;QAC/D,WAAW,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU,EAAE;KAC5D,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,gCAAwB;QAChC,WAAW,EAAE,2BAA2B,UAAU,oBAAoB;KACvE,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,sBAAsB;QACnC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAA,uBAAa,EAAC,gDAAyB,CAAC,EAAE;KAC3D,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,6BAA6B;QAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,IAAA,uBAAa,EAAC,gDAAyB,CAAC,EAAE;KAC3D,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEvC,IAAA,qBAAW,EAAC;QACV,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,qBAAqB;QAClC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAA,uBAAa,EAAC,gDAAyB,CAAC,EAAE;KAC3D,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { OpenAPIObject } from '@nestjs/swagger';
2
+ /**
3
+ * @nestjs/swagger exposes only `.`, `./plugin` and `./package.json` through its
4
+ * exports map, and its root barrel re-exports just `ApiTagOptions` and
5
+ * `OpenAPIObject` out of the OpenAPI spec interfaces. The schema types are
6
+ * therefore derived from `OpenAPIObject` rather than reached for through a deep
7
+ * import, which stops resolving the moment the package tightens its exports.
8
+ *
9
+ * `components.schemas` is typed as `Record<string, SchemaObject |
10
+ * ReferenceObject>`, and a reference is the only member carrying `$ref`, so the
11
+ * union splits cleanly.
12
+ */
13
+ type SchemaOrReference = NonNullable<NonNullable<OpenAPIObject['components']>['schemas']>[string];
14
+ export type ReferenceObject = Extract<SchemaOrReference, {
15
+ $ref: string;
16
+ }>;
17
+ export type SchemaObject = Exclude<SchemaOrReference, ReferenceObject>;
18
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=open-api-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-api-types.js","sourceRoot":"","sources":["../../../../../../../../../libs/json-api/json-api-nestjs/src/lib/modules/mixin/swagger/open-api-types.ts"],"names":[],"mappings":""}
@@ -6,4 +6,5 @@ export declare class SwaggerBindService<E extends object, IdKey extends string =
6
6
  private mapEntity;
7
7
  onModuleInit(): void;
8
8
  initSwagger(): void;
9
+ private processJsonApiResponseFrom;
9
10
  }
@@ -3,12 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SwaggerBindService = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const common_1 = require("@nestjs/common");
6
- const constants_1 = require("@nestjs/swagger/dist/constants");
7
6
  const swagger_1 = require("@nestjs/swagger");
7
+ const swagger_2 = require("@nestjs/swagger");
8
8
  const core_1 = require("@nestjs/core");
9
9
  const json_api_nestjs_shared_1 = require("@klerick/json-api-nestjs-shared");
10
- const constants_2 = require("@nestjs/common/constants");
11
- const constants_3 = require("../../../constants");
10
+ const constants_1 = require("@nestjs/common/constants");
11
+ const constants_2 = require("../../../constants");
12
12
  const helpers_1 = require("../helpers");
13
13
  const controllers_1 = require("../controllers");
14
14
  const filter_operand_model_1 = require("./filter-operand-model");
@@ -16,6 +16,8 @@ const utils_1 = require("./utils");
16
16
  const bindings_1 = require("../config/bindings");
17
17
  const method_1 = require("./method");
18
18
  const service_1 = require("../service");
19
+ const error_response_model_1 = require("./error-response-model");
20
+ const decorators_1 = require("../decorators");
19
21
  let SwaggerBindService = class SwaggerBindService {
20
22
  entity;
21
23
  discoveryService;
@@ -25,25 +27,27 @@ let SwaggerBindService = class SwaggerBindService {
25
27
  this.initSwagger();
26
28
  }
27
29
  initSwagger() {
28
- const controllerName = (0, helpers_1.nameIt)((0, helpers_1.getProviderName)(this.entity, constants_3.JSON_API_CONTROLLER_POSTFIX), controllers_1.JsonBaseController).name;
30
+ const controllerName = (0, helpers_1.nameIt)((0, helpers_1.getProviderName)(this.entity, constants_2.JSON_API_CONTROLLER_POSTFIX), controllers_1.JsonBaseController).name;
29
31
  const controllerInst = this.discoveryService
30
32
  .getControllers()
31
33
  .find((i) => i.name === controllerName ||
32
34
  this.entity ===
33
- Reflect.getMetadata(constants_3.JSON_API_DECORATOR_ENTITY, i.instance.constructor));
35
+ Reflect.getMetadata(constants_2.JSON_API_DECORATOR_ENTITY, i.instance.constructor));
34
36
  if (!controllerInst)
35
37
  throw new Error(`Controller for ${this.entity.name} is empty`);
36
38
  const mapProps = this.mapEntity.getParamMap(this.entity);
37
39
  if (!mapProps)
38
40
  throw new Error(`ZodEntityProps for ${this.entity.name} is empty`);
39
41
  const controller = controllerInst.instance.constructor;
40
- const apiTag = Reflect.getMetadata(constants_1.DECORATORS.API_TAGS, controller);
42
+ const apiTag = Reflect.getMetadata(swagger_1.DECORATORS.API_TAGS, controller);
41
43
  if (!apiTag) {
42
- (0, swagger_1.ApiTags)(this.config['overrideRoute'] || this.entity.name)(controller);
44
+ (0, swagger_2.ApiTags)(this.config['overrideRoute'] || this.entity.name)(controller);
43
45
  }
44
- (0, swagger_1.ApiTags)(this.entity.name)(controller);
45
- (0, swagger_1.ApiExtraModels)(filter_operand_model_1.FilterOperand)(controller);
46
- (0, swagger_1.ApiExtraModels)((0, utils_1.createApiModels)(this.entity, mapProps))(controller);
46
+ (0, swagger_2.ApiExtraModels)(filter_operand_model_1.FilterOperand)(controller);
47
+ (0, swagger_2.ApiExtraModels)(error_response_model_1.JsonApiErrorResponseModel)(controller);
48
+ (0, swagger_2.ApiExtraModels)((0, utils_1.createApiModels)(this.entity, mapProps))(controller);
49
+ (0, utils_1.ensureZodSchemasRegistered)();
50
+ (0, swagger_2.ApiExtraModels)(utils_1.ZodSchemaRef)(controller);
47
51
  const { allowMethod = json_api_nestjs_shared_1.ObjectTyped.keys(bindings_1.Bindings) } = this.config;
48
52
  for (const method of json_api_nestjs_shared_1.ObjectTyped.keys(bindings_1.Bindings)) {
49
53
  if (!allowMethod.includes(method))
@@ -54,13 +58,48 @@ let SwaggerBindService = class SwaggerBindService {
54
58
  if (!descriptor)
55
59
  throw new Error(`Descriptor for entity controller ${this.entity.name} is empty`);
56
60
  method_1.swaggerMethod[method](controller.prototype, descriptor, this.entity, this.mapEntity, method);
57
- Reflect.defineMetadata(constants_2.PARAMTYPES_METADATA, [Object], controller.prototype, method);
61
+ Reflect.defineMetadata(constants_1.PARAMTYPES_METADATA, [Object], controller.prototype, method);
62
+ }
63
+ // Process JsonApiResponseFrom decorators on custom methods
64
+ this.processJsonApiResponseFrom(controller);
65
+ }
66
+ processJsonApiResponseFrom(controller) {
67
+ const responseMeta = Reflect.getMetadata(decorators_1.JSON_API_RESPONSE_FROM, controller);
68
+ if (!responseMeta)
69
+ return;
70
+ const prototype = controller.prototype;
71
+ for (const [targetMethod, sourceMapping] of Object.entries(responseMeta)) {
72
+ const descriptor = Reflect.getOwnPropertyDescriptor(prototype, targetMethod);
73
+ if (!descriptor)
74
+ continue;
75
+ const targetResponses = Reflect.getMetadata(swagger_1.DECORATORS.API_RESPONSE, descriptor.value);
76
+ if (!targetResponses)
77
+ continue;
78
+ for (const [sourceMethod, mappings] of Object.entries(sourceMapping)) {
79
+ const sourceDescriptor = Reflect.getOwnPropertyDescriptor(prototype, sourceMethod);
80
+ if (!sourceDescriptor)
81
+ continue;
82
+ const sourceResponses = Reflect.getMetadata(swagger_1.DECORATORS.API_RESPONSE, sourceDescriptor.value);
83
+ if (!sourceResponses || !mappings)
84
+ continue;
85
+ for (const { fromStatus, toStatus } of [...mappings]) {
86
+ const sourceResponse = sourceResponses[fromStatus];
87
+ if (!sourceResponse?.schema)
88
+ continue;
89
+ const existingTarget = targetResponses[toStatus] || {};
90
+ (0, swagger_2.ApiResponse)({
91
+ status: toStatus,
92
+ ...existingTarget,
93
+ schema: sourceResponse.schema,
94
+ })(prototype, targetMethod, descriptor);
95
+ }
96
+ }
58
97
  }
59
98
  }
60
99
  };
61
100
  exports.SwaggerBindService = SwaggerBindService;
62
101
  tslib_1.__decorate([
63
- (0, common_1.Inject)(constants_3.CURRENT_ENTITY),
102
+ (0, common_1.Inject)(constants_2.CURRENT_ENTITY),
64
103
  tslib_1.__metadata("design:type", Object)
65
104
  ], SwaggerBindService.prototype, "entity", void 0);
66
105
  tslib_1.__decorate([
@@ -68,7 +107,7 @@ tslib_1.__decorate([
68
107
  tslib_1.__metadata("design:type", core_1.DiscoveryService)
69
108
  ], SwaggerBindService.prototype, "discoveryService", void 0);
70
109
  tslib_1.__decorate([
71
- (0, common_1.Inject)(constants_3.CONTROLLER_OPTIONS_TOKEN),
110
+ (0, common_1.Inject)(constants_2.CONTROLLER_OPTIONS_TOKEN),
72
111
  tslib_1.__metadata("design:type", Object)
73
112
  ], SwaggerBindService.prototype, "config", void 0);
74
113
  tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"swagger-bind.service.js","sourceRoot":"","sources":["../../../../../../../../../libs/json-api/json-api-nestjs/src/lib/modules/mixin/swagger/swagger-bind.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swagger-bind.service.js","sourceRoot":"","sources":["../../../../../../../../../libs/json-api/json-api-nestjs/src/lib/modules/mixin/swagger/swagger-bind.service.ts"],"names":[],"mappings":"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"}
@@ -1,49 +1,10 @@
1
- import { SchemaObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface';
2
- import { AnyEntity, EntityClass, PropertyKeys } from '@klerick/json-api-nestjs-shared';
1
+ import type { SchemaObject, ReferenceObject } from './open-api-types';
2
+ import { EntityClass, AttrKeys } from '@klerick/json-api-nestjs-shared';
3
3
  import { EntityParam } from '../../../types';
4
- import { EntityParamMap } from '../types';
5
4
  import { EntityParamMapService } from '../service';
6
- import { toJSONSchema } from 'zod';
5
+ import { toJSONSchema, ZodType } from 'zod';
7
6
  export declare function assertIsKeysOfObject<E extends object>(object: EntityClass<E>, element: any): asserts element is readonly [keyof E];
8
- export declare function assertIsKeyOfObject<E extends object>(object: EntityClass<E>, element: unknown): asserts element is PropertyKeys<E>;
9
- export declare const errorSchema: {
10
- type: string;
11
- properties: {
12
- statusCode: {
13
- type: string;
14
- };
15
- error: {
16
- type: string;
17
- };
18
- message: {
19
- type: string;
20
- items: {
21
- type: string;
22
- properties: {
23
- code: {
24
- type: string;
25
- };
26
- message: {
27
- type: string;
28
- };
29
- path: {
30
- type: string;
31
- items: {
32
- type: string;
33
- };
34
- };
35
- keys: {
36
- type: string;
37
- items: {
38
- type: string;
39
- };
40
- };
41
- };
42
- required: string[];
43
- };
44
- };
45
- };
46
- };
7
+ export declare function assertIsKeyOfObject<E extends object>(object: EntityClass<E>, element: unknown): asserts element is AttrKeys<E>;
47
8
  export declare function jsonSchemaResponse<E extends object, IdKey extends string = 'id'>(entity: EntityClass<E>, mapEntity: EntityParamMapService<E, IdKey>, array?: boolean): {
48
9
  type: string;
49
10
  properties: {
@@ -51,110 +12,15 @@ export declare function jsonSchemaResponse<E extends object, IdKey extends strin
51
12
  type: string;
52
13
  };
53
14
  data: {
54
- type: string;
55
- properties: {
56
- type: {
57
- type: string;
58
- const: string;
59
- };
60
- id: {
61
- type: string;
62
- };
63
- attributes: {
64
- type: string;
65
- properties: Record<string, SchemaObject>;
66
- };
67
- relationships: {
68
- type: string;
69
- properties: Record<string, SchemaObject>;
70
- };
71
- links: {
72
- type: string;
73
- properties: {
74
- self: {
75
- type: string;
76
- };
77
- };
78
- required: string[];
79
- };
80
- };
15
+ $ref: string;
81
16
  } | {
82
17
  type: string;
83
18
  items: {
84
- type: string;
85
- properties: {
86
- type: {
87
- type: string;
88
- const: string;
89
- };
90
- id: {
91
- type: string;
92
- };
93
- attributes: {
94
- type: string;
95
- properties: Record<string, SchemaObject>;
96
- };
97
- relationships: {
98
- type: string;
99
- properties: Record<string, SchemaObject>;
100
- };
101
- links: {
102
- type: string;
103
- properties: {
104
- self: {
105
- type: string;
106
- };
107
- };
108
- required: string[];
109
- };
110
- };
19
+ $ref: string;
111
20
  };
112
21
  };
113
22
  includes: {
114
- type: string;
115
- items: {
116
- type: string;
117
- properties: {
118
- type: {
119
- type: string;
120
- };
121
- id: {
122
- type: string;
123
- };
124
- attributes: {
125
- type: string;
126
- };
127
- relationships: {
128
- type: string;
129
- properties: {
130
- relationName: {
131
- properties: {
132
- links: {
133
- type: string;
134
- properties: {
135
- self: {
136
- type: string;
137
- };
138
- };
139
- required: string[];
140
- };
141
- };
142
- required: string[];
143
- };
144
- };
145
- };
146
- links: {
147
- type: string;
148
- properties: {
149
- self: {
150
- type: string;
151
- };
152
- };
153
- required: string[];
154
- };
155
- };
156
- required: string[];
157
- };
23
+ $ref: string;
158
24
  };
159
25
  };
160
26
  required: string[];
@@ -194,5 +60,14 @@ export declare const schemaTypeForRelation: {
194
60
  };
195
61
  };
196
62
  };
197
- export declare function getEntityMapProps<E extends object>(mapEntity: EntityParamMap<EntityClass<AnyEntity>>, entity: EntityClass<E>): EntityParam<EntityClass<object>>;
198
63
  export declare const zodToJSONSchemaParams: Parameters<typeof toJSONSchema>[1];
64
+ export declare class ZodSchemaRef {
65
+ JsonApiLinks: unknown;
66
+ JsonApiIncludes: unknown;
67
+ RelationshipResponse: unknown;
68
+ }
69
+ export declare const schemaTypeForRelationRef: {
70
+ $ref: string;
71
+ };
72
+ export declare function ensureZodSchemasRegistered(): void;
73
+ export declare function zodToOpenApiSchema<T extends ZodType>(schema: T, params?: Parameters<typeof toJSONSchema>[1]): SchemaObject | ReferenceObject;