@klerick/json-api-nestjs 10.0.0-beta.9 → 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 (148) hide show
  1. package/CHANGELOG.md +157 -0
  2. package/README.md +299 -23
  3. package/package.json +4 -8
  4. package/src/index.d.ts +1 -1
  5. package/src/index.js +2 -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/mixin.module.js +1 -0
  48. package/src/lib/modules/mixin/mixin.module.js.map +1 -1
  49. package/src/lib/modules/mixin/pipe/index.d.ts +1 -0
  50. package/src/lib/modules/mixin/pipe/index.js +5 -0
  51. package/src/lib/modules/mixin/pipe/index.js.map +1 -1
  52. package/src/lib/modules/mixin/pipe/meta-extractor/index.d.ts +1 -0
  53. package/src/lib/modules/mixin/pipe/meta-extractor/index.js +5 -0
  54. package/src/lib/modules/mixin/pipe/meta-extractor/index.js.map +1 -0
  55. package/src/lib/modules/mixin/pipe/meta-extractor/meta-extractor.pipe.d.ts +6 -0
  56. package/src/lib/modules/mixin/pipe/meta-extractor/meta-extractor.pipe.js +27 -0
  57. package/src/lib/modules/mixin/pipe/meta-extractor/meta-extractor.pipe.js.map +1 -0
  58. package/src/lib/modules/mixin/service/json-api-transformer.service.d.ts +2 -2
  59. package/src/lib/modules/mixin/service/json-api-transformer.service.js.map +1 -1
  60. package/src/lib/modules/mixin/swagger/error-response-model.d.ts +11 -0
  61. package/src/lib/modules/mixin/swagger/error-response-model.js +63 -0
  62. package/src/lib/modules/mixin/swagger/error-response-model.js.map +1 -0
  63. package/src/lib/modules/mixin/swagger/method/delete-one.js +3 -3
  64. package/src/lib/modules/mixin/swagger/method/delete-one.js.map +1 -1
  65. package/src/lib/modules/mixin/swagger/method/delete-relationship.js +6 -6
  66. package/src/lib/modules/mixin/swagger/method/delete-relationship.js.map +1 -1
  67. package/src/lib/modules/mixin/swagger/method/get-all.js +9 -39
  68. package/src/lib/modules/mixin/swagger/method/get-all.js.map +1 -1
  69. package/src/lib/modules/mixin/swagger/method/get-one.js +5 -5
  70. package/src/lib/modules/mixin/swagger/method/get-one.js.map +1 -1
  71. package/src/lib/modules/mixin/swagger/method/get-relationship.js +5 -4
  72. package/src/lib/modules/mixin/swagger/method/get-relationship.js.map +1 -1
  73. package/src/lib/modules/mixin/swagger/method/patch-one.js +5 -5
  74. package/src/lib/modules/mixin/swagger/method/patch-one.js.map +1 -1
  75. package/src/lib/modules/mixin/swagger/method/patch-relationship.js +7 -7
  76. package/src/lib/modules/mixin/swagger/method/patch-relationship.js.map +1 -1
  77. package/src/lib/modules/mixin/swagger/method/post-one.js +5 -5
  78. package/src/lib/modules/mixin/swagger/method/post-one.js.map +1 -1
  79. package/src/lib/modules/mixin/swagger/method/post-relationship.js +7 -7
  80. package/src/lib/modules/mixin/swagger/method/post-relationship.js.map +1 -1
  81. package/src/lib/modules/mixin/swagger/open-api-types.d.ts +18 -0
  82. package/src/lib/modules/mixin/swagger/open-api-types.js +3 -0
  83. package/src/lib/modules/mixin/swagger/open-api-types.js.map +1 -0
  84. package/src/lib/modules/mixin/swagger/swagger-bind.service.d.ts +1 -0
  85. package/src/lib/modules/mixin/swagger/swagger-bind.service.js +52 -13
  86. package/src/lib/modules/mixin/swagger/swagger-bind.service.js.map +1 -1
  87. package/src/lib/modules/mixin/swagger/utils.d.ts +17 -142
  88. package/src/lib/modules/mixin/swagger/utils.js +178 -124
  89. package/src/lib/modules/mixin/swagger/utils.js.map +1 -1
  90. package/src/lib/modules/mixin/zod/index.d.ts +1 -1
  91. package/src/lib/modules/mixin/zod/index.js +4 -0
  92. package/src/lib/modules/mixin/zod/index.js.map +1 -1
  93. package/src/lib/modules/mixin/zod/map-transform-to-json-shema.d.ts +2 -0
  94. package/src/lib/modules/mixin/zod/map-transform-to-json-shema.js +10 -0
  95. package/src/lib/modules/mixin/zod/map-transform-to-json-shema.js.map +1 -1
  96. package/src/lib/modules/mixin/zod/zod-input-patch-relationship-schema/index.d.ts +8 -0
  97. package/src/lib/modules/mixin/zod/zod-input-patch-relationship-schema/index.js +8 -3
  98. package/src/lib/modules/mixin/zod/zod-input-patch-relationship-schema/index.js.map +1 -1
  99. package/src/lib/modules/mixin/zod/zod-input-patch-schema/index.d.ts +3 -1
  100. package/src/lib/modules/mixin/zod/zod-input-patch-schema/index.js +1 -0
  101. package/src/lib/modules/mixin/zod/zod-input-patch-schema/index.js.map +1 -1
  102. package/src/lib/modules/mixin/zod/zod-input-post-relationship-schema/index.d.ts +1 -0
  103. package/src/lib/modules/mixin/zod/zod-input-post-relationship-schema/index.js +1 -0
  104. package/src/lib/modules/mixin/zod/zod-input-post-relationship-schema/index.js.map +1 -1
  105. package/src/lib/modules/mixin/zod/zod-input-post-schema/index.d.ts +4 -2
  106. package/src/lib/modules/mixin/zod/zod-input-post-schema/index.js +2 -1
  107. package/src/lib/modules/mixin/zod/zod-input-post-schema/index.js.map +1 -1
  108. package/src/lib/modules/mixin/zod/zod-input-query-schema/fields.d.ts +8 -5
  109. package/src/lib/modules/mixin/zod/zod-input-query-schema/fields.js +16 -12
  110. package/src/lib/modules/mixin/zod/zod-input-query-schema/fields.js.map +1 -1
  111. package/src/lib/modules/mixin/zod/zod-input-query-schema/filter.d.ts +76 -6
  112. package/src/lib/modules/mixin/zod/zod-input-query-schema/filter.js +32 -10
  113. package/src/lib/modules/mixin/zod/zod-input-query-schema/filter.js.map +1 -1
  114. package/src/lib/modules/mixin/zod/zod-input-query-schema/index.d.ts +40 -15
  115. package/src/lib/modules/mixin/zod/zod-input-query-schema/index.js +3 -1
  116. package/src/lib/modules/mixin/zod/zod-input-query-schema/index.js.map +1 -1
  117. package/src/lib/modules/mixin/zod/zod-query-schema/fields.d.ts +1 -1
  118. package/src/lib/modules/mixin/zod/zod-query-schema/fields.js +5 -4
  119. package/src/lib/modules/mixin/zod/zod-query-schema/fields.js.map +1 -1
  120. package/src/lib/modules/mixin/zod/zod-query-schema/filter.d.ts +4 -2
  121. package/src/lib/modules/mixin/zod/zod-query-schema/filter.js +19 -8
  122. package/src/lib/modules/mixin/zod/zod-query-schema/filter.js.map +1 -1
  123. package/src/lib/modules/mixin/zod/zod-query-schema/include.d.ts +9 -2
  124. package/src/lib/modules/mixin/zod/zod-query-schema/include.js +2 -1
  125. package/src/lib/modules/mixin/zod/zod-query-schema/include.js.map +1 -1
  126. package/src/lib/modules/mixin/zod/zod-query-schema/sort.d.ts +2 -2
  127. package/src/lib/modules/mixin/zod/zod-query-schema/sort.js +5 -4
  128. package/src/lib/modules/mixin/zod/zod-query-schema/sort.js.map +1 -1
  129. package/src/lib/modules/mixin/zod/zod-share/attributes.d.ts +12 -6
  130. package/src/lib/modules/mixin/zod/zod-share/attributes.js +12 -7
  131. package/src/lib/modules/mixin/zod/zod-share/attributes.js.map +1 -1
  132. package/src/lib/modules/mixin/zod/zod-share/id.d.ts +12 -0
  133. package/src/lib/modules/mixin/zod/zod-share/id.js +17 -0
  134. package/src/lib/modules/mixin/zod/zod-share/id.js.map +1 -1
  135. package/src/lib/modules/mixin/zod/zod-share/index.d.ts +1 -0
  136. package/src/lib/modules/mixin/zod/zod-share/index.js +1 -0
  137. package/src/lib/modules/mixin/zod/zod-share/index.js.map +1 -1
  138. package/src/lib/modules/mixin/zod/zod-share/meta.d.ts +11 -0
  139. package/src/lib/modules/mixin/zod/zod-share/meta.js +15 -0
  140. package/src/lib/modules/mixin/zod/zod-share/meta.js.map +1 -0
  141. package/src/lib/modules/mixin/zod/zod-share/page.d.ts +2 -2
  142. package/src/lib/modules/mixin/zod/zod-utils.d.ts +2 -0
  143. package/src/lib/modules/mixin/zod/zod-utils.js +20 -0
  144. package/src/lib/modules/mixin/zod/zod-utils.js.map +1 -1
  145. package/src/lib/types/entity-param.type.d.ts +7 -7
  146. package/src/lib/types/module-options.types.d.ts +1 -0
  147. package/src/lib/utils/module-helper.js +1 -0
  148. package/src/lib/utils/module-helper.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,160 @@
1
+ # 10.0.0 (2026-08-13)
2
+
3
+ ### 🚀 Features
4
+
5
+ - **json-api-nestjs-microorm:** migrate to MikroORM 7 ([85b3855](https://github.com/klerick/nestjs-json-api/commit/85b3855))
6
+ - **json-api-nestjs:** add support for `meta` object in various operations ([3c09413](https://github.com/klerick/nestjs-json-api/commit/3c09413))
7
+ - **json-api-nestjs:** enhance Zod schema definitions with metadata, refactor Swagger integration, and improve reusability of schema registrations ([9ecb739](https://github.com/klerick/nestjs-json-api/commit/9ecb739))
8
+ - **json-api-nestjs:** refactor query parameter schemas with Zod, improve Swagger definitions, and add reusable transformers ([70e955f](https://github.com/klerick/nestjs-json-api/commit/70e955f))
9
+ - **json-api-nestjs:** add primary key handling for relations and improve query schema generation ([7caea1a](https://github.com/klerick/nestjs-json-api/commit/7caea1a))
10
+ - **json-api-nestjs-shared,json-api-nestjs:** im did mistake in commit msg ([56c483a](https://github.com/klerick/nestjs-json-api/commit/56c483a))
11
+ - **json-api-nestjs:** enhance ZodIncludeQuery with improved type definitions and utility functions ([c4a5856](https://github.com/klerick/nestjs-json-api/commit/c4a5856))
12
+ - **json-api-nestjs:** add JsonApiResponseFrom decorator for reusing response schemas across methods ([f1f49c1](https://github.com/klerick/nestjs-json-api/commit/f1f49c1))
13
+ - **json-api-nestjs:** replace `errorSchema` with `JsonApiErrorResponseModel`, update response schema handling across Swagger methods ([4e7f481](https://github.com/klerick/nestjs-json-api/commit/4e7f481))
14
+ - **json-api-nestjs:** add support for excluding controllers during module initialization ([5e2de06](https://github.com/klerick/nestjs-json-api/commit/5e2de06))
15
+ - **json-api-nestjs:** optimize and memoize Zod schema generation ([611da19](https://github.com/klerick/nestjs-json-api/commit/611da19))
16
+ - **json-api-nestjs:** enhance Patch and Post schema handling, add utility for merging patch data and refine type definitions for attributes and relationships ([2887603](https://github.com/klerick/nestjs-json-api/commit/2887603))
17
+ - **json-api-nestjs:** add read-only and immutable field decorators with validation schema updates and inheritance support ([fccf757](https://github.com/klerick/nestjs-json-api/commit/fccf757))
18
+ - **json-api-nestjs,json-api-nestjs-microorm,json-api-nestjs-typeorm:** add support for automatic resource linkage in to-one relations, update FK field detection and handling ([0dd670d](https://github.com/klerick/nestjs-json-api/commit/0dd670d))
19
+ - **json-api-nestjs:** add hooks support and enhance guards handling with `afterCreateController` hook and guards logic - prepare for acl libs ([5059530](https://github.com/klerick/nestjs-json-api/commit/5059530))
20
+ - **json-api-nestjs:** add `allowSetId` option for enhanced control over entity ID assignment during POST operations ([ce269ad](https://github.com/klerick/nestjs-json-api/commit/ce269ad))
21
+ - **json-api-nestjs:** fix after update nx ([e51f07c](https://github.com/klerick/nestjs-json-api/commit/e51f07c))
22
+ - **json-api-nestjs:** bump zod to v4 ([19888e9](https://github.com/klerick/nestjs-json-api/commit/19888e9))
23
+ - **json-api-nestjs:** Add JSON_API_DECORATOR_ENTITY metadata to controller ([d2deb39](https://github.com/klerick/nestjs-json-api/commit/d2deb39))
24
+ - **json-api-nestjs:** fix after update nx ([5d87f95](https://github.com/klerick/nestjs-json-api/commit/5d87f95))
25
+ - **json-api-nestjs:** bump zod to v4 ([23709bd](https://github.com/klerick/nestjs-json-api/commit/23709bd))
26
+ - **json-api-nestjs:** Export `Params` type in index.ts ([bd509a5](https://github.com/klerick/nestjs-json-api/commit/bd509a5))
27
+ - **json-api-nestjs:** Update package.json dep ([87519a0](https://github.com/klerick/nestjs-json-api/commit/87519a0))
28
+ - **json-api-nestjs,json-api-nestjs-microorm,json-api-nestjs-sdk,json-api-nestjs-shared,json-api-nestjs-typeorm:** up nestjs ([77c7bf4](https://github.com/klerick/nestjs-json-api/commit/77c7bf4))
29
+ - **json-api-nestjs,json-api-nestjs-microorm,json-api-nestjs-sdk,json-api-nestjs-shared,json-api-nestjs-typeorm:** up nestjs ([42b6b82](https://github.com/klerick/nestjs-json-api/commit/42b6b82))
30
+ - **json-api-nestjs,json-api-nestjs-microorm,json-api-nestjs-sdk,json-api-nestjs-shared,json-api-nestjs-typeorm:** up nestjs ([4c559e2](https://github.com/klerick/nestjs-json-api/commit/4c559e2))
31
+ - **json-api-nestjs,json-api-nestjs-microorm,json-api-nestjs-sdk,json-api-nestjs-shared,json-api-nestjs-typeorm:** up nestjs ([b590802](https://github.com/klerick/nestjs-json-api/commit/b590802))
32
+ - ⚠️ **json-api-nestjs:** remove module and refactoring ([f202ebc](https://github.com/klerick/nestjs-json-api/commit/f202ebc))
33
+
34
+ ### 🩹 Fixes
35
+
36
+ - **json-api-nestjs:** replace `id` with `lid` in atomic operation references for JSON:API compliance ([579ed01](https://github.com/klerick/nestjs-json-api/commit/579ed01))
37
+ - **json-api-nestjs:** replace `tmpIds` with `lids` for improved clarity in atomic operation logic and related tests ([81e7da9](https://github.com/klerick/nestjs-json-api/commit/81e7da9))
38
+ - **json-api-nestjs:** replace deprecated faker methods, enhance zod schemas with transformations and update constants with METHOD_NAME. change name for method function ([e382bce](https://github.com/klerick/nestjs-json-api/commit/e382bce))
39
+ - **json-api-nestjs:** use ErrorFormatService for format error in AtomicOperationModule fix work with tmpId ([6d166ba](https://github.com/klerick/nestjs-json-api/commit/6d166ba))
40
+ - **json-api-nestjs:** Some fix for swagger ([9a0f190](https://github.com/klerick/nestjs-json-api/commit/9a0f190))
41
+ - **json-api-nestjs:** Use correct options for check is debug or not ([e52cc92](https://github.com/klerick/nestjs-json-api/commit/e52cc92))
42
+ - **json-api-nestjs:** fix type in some place ([61f45e6](https://github.com/klerick/nestjs-json-api/commit/61f45e6))
43
+
44
+ ### ⚠️ Breaking Changes
45
+
46
+ - **json-api-nestjs:** remove module and refactoring ([f202ebc](https://github.com/klerick/nestjs-json-api/commit/f202ebc))
47
+ Change type signature, rename npm package
48
+
49
+ ### 🧱 Updated Dependencies
50
+
51
+ - Updated json-api-nestjs-shared to 1.0.0-beta.8
52
+
53
+ ### ❤️ Thank You
54
+
55
+ - Alex H
56
+ - Claude Opus 5 (1M context)
57
+
58
+ ## 10.0.0-beta.18 (2026-02-16)
59
+
60
+ ### 🚀 Features
61
+
62
+ - **json-api-nestjs:** add support for `meta` object in various operations ([3c09413](https://github.com/klerick/nestjs-json-api/commit/3c09413))
63
+
64
+ ### ❤️ Thank You
65
+
66
+ - Alex H
67
+
68
+ ## 10.0.0-beta.17 (2026-02-11)
69
+
70
+ ### 🩹 Fixes
71
+
72
+ - **json-api-nestjs:** replace `id` with `lid` in atomic operation references for JSON:API compliance ([579ed01](https://github.com/klerick/nestjs-json-api/commit/579ed01))
73
+ - **json-api-nestjs:** replace `tmpIds` with `lids` for improved clarity in atomic operation logic and related tests ([81e7da9](https://github.com/klerick/nestjs-json-api/commit/81e7da9))
74
+
75
+ ### ❤️ Thank You
76
+
77
+ - Alex H
78
+
79
+ ## 10.0.0-beta.16 (2026-02-05)
80
+
81
+ ### 🚀 Features
82
+
83
+ - **json-api-nestjs:** enhance Zod schema definitions with metadata, refactor Swagger integration, and improve reusability of schema registrations ([9ecb739](https://github.com/klerick/nestjs-json-api/commit/9ecb739))
84
+
85
+ ### ❤️ Thank You
86
+
87
+ - Alex H
88
+
89
+ ## 10.0.0-beta.15 (2026-02-01)
90
+
91
+ ### 🚀 Features
92
+
93
+ - **json-api-nestjs:** refactor query parameter schemas with Zod, improve Swagger definitions, and add reusable transformers ([70e955f](https://github.com/klerick/nestjs-json-api/commit/70e955f))
94
+ - **json-api-nestjs:** add primary key handling for relations and improve query schema generation ([7caea1a](https://github.com/klerick/nestjs-json-api/commit/7caea1a))
95
+
96
+ ### 🧱 Updated Dependencies
97
+
98
+ - Updated json-api-nestjs-shared to 1.0.0-beta.7
99
+
100
+ ### ❤️ Thank You
101
+
102
+ - Alex H
103
+
104
+ ## 10.0.0-beta.14 (2026-01-23)
105
+
106
+ ### 🚀 Features
107
+
108
+ - **json-api-nestjs-shared,json-api-nestjs:** im did mistake in commit msg ([56c483a](https://github.com/klerick/nestjs-json-api/commit/56c483a))
109
+
110
+ ### 🧱 Updated Dependencies
111
+
112
+ - Updated json-api-nestjs-shared to 1.0.0-beta.6
113
+
114
+ ### ❤️ Thank You
115
+
116
+ - Alex H
117
+
118
+ ## 10.0.0-beta.13 (2026-01-23)
119
+
120
+ This was a version bump only for json-api-nestjs to align it with other projects, there were no code changes.
121
+
122
+ ## 10.0.0-beta.12 (2026-01-23)
123
+
124
+ ### 🚀 Features
125
+
126
+ - **json-api-nestjs:** enhance ZodIncludeQuery with improved type definitions and utility functions ([c4a5856](https://github.com/klerick/nestjs-json-api/commit/c4a5856))
127
+ - **json-api-nestjs:** add JsonApiResponseFrom decorator for reusing response schemas across methods ([f1f49c1](https://github.com/klerick/nestjs-json-api/commit/f1f49c1))
128
+ - **json-api-nestjs:** replace `errorSchema` with `JsonApiErrorResponseModel`, update response schema handling across Swagger methods ([4e7f481](https://github.com/klerick/nestjs-json-api/commit/4e7f481))
129
+
130
+ ### 🧱 Updated Dependencies
131
+
132
+ - Updated json-api-nestjs-shared to 1.0.0-beta.5
133
+
134
+ ### ❤️ Thank You
135
+
136
+ - Alex H
137
+
138
+ ## 10.0.0-beta.11 (2026-01-22)
139
+
140
+ ### 🚀 Features
141
+
142
+ - **json-api-nestjs:** add support for excluding controllers during module initialization ([5e2de06](https://github.com/klerick/nestjs-json-api/commit/5e2de06))
143
+
144
+ ### ❤️ Thank You
145
+
146
+ - Alex H
147
+
148
+ ## 10.0.0-beta.10 (2026-01-21)
149
+
150
+ ### 🚀 Features
151
+
152
+ - **json-api-nestjs:** optimize and memoize Zod schema generation ([611da19](https://github.com/klerick/nestjs-json-api/commit/611da19))
153
+
154
+ ### ❤️ Thank You
155
+
156
+ - Alex H
157
+
1
158
  ## 10.0.0-beta.9 (2026-01-20)
2
159
 
3
160
  ### 🚀 Features
package/README.md CHANGED
@@ -79,8 +79,9 @@ The following interface is using for the configuration:
79
79
  ```typescript
80
80
  export interface ModuleOptions {
81
81
  entities: Entity[]; // List of typeOrm Entity
82
+ excludeControllers?: Entity[]; // List of entities to exclude from automatic controller generation
82
83
  controllers?: NestController[]; // List of controller, if you need extend default present
83
- connectionName?: string; // Type orm connection name: "default" is default name
84
+ connectionName?: string; // Type orm connection name: "default" is default name
84
85
  providers?: NestProvider[]; // List of addition provider for useing in custom controller
85
86
  imports?: NestImport[]; // List of addition module for useing in custom controller
86
87
  options?: {
@@ -88,11 +89,38 @@ export interface ModuleOptions {
88
89
  debug?: boolean; // Debug info in result object, like error message
89
90
  pipeForId?: Type<PipeTransform> // Nestjs pipe for validate id params, by default ParseIntPipe
90
91
  operationUrl?: string // Url for atomic operation https://jsonapi.org/ext/atomic/
91
- // You can add params for MicroOrm or TypeOrm adapter
92
+ allowSetId?: boolean // Allow client to set id on POST requests, false by default
93
+ // You can add params for MicroOrm or TypeOrm adapter
92
94
  } ;
93
95
  }
94
96
  ```
95
97
 
98
+ ### Excluding Controllers
99
+
100
+ If you need to register entities for relationships but don't want automatic controller generation for some of them, use `excludeControllers`:
101
+
102
+ ```typescript
103
+ import {Module} from '@nestjs/common';
104
+ import {JsonApiModule} from '@klerick/json-api-nestjs';
105
+ import {TypeOrmJsonApiModule} from '@klerick/json-api-nestjs-typeorm';
106
+ import {Users, Roles, AuditLog} from 'database';
107
+
108
+ @Module({
109
+ imports: [
110
+ JsonApiModule.forRoot(TypeOrmJsonApiModule, {
111
+ entities: [Users, Roles, AuditLog],
112
+ excludeControllers: [AuditLog], // AuditLog entity will not have auto-generated controller
113
+ }),
114
+ ],
115
+ })
116
+ export class AppModule {}
117
+ ```
118
+
119
+ This is useful when:
120
+ - You want to manage certain entities only through relationships
121
+ - You need custom controller implementation without the auto-generated one
122
+ - Some entities should be internal and not exposed via REST API
123
+
96
124
  You can extend the default controller:
97
125
 
98
126
  ```typescript
@@ -335,6 +363,42 @@ type FilterOperand
335
363
  }
336
364
  }
337
365
  ```
366
+
367
+ ### Client-Generated IDs
368
+
369
+ By default, the server generates IDs for new resources. If you need clients to provide their own IDs (e.g., UUIDs), enable the `allowSetId` option:
370
+
371
+ ```typescript
372
+ @Module({
373
+ imports: [
374
+ JsonApiModule.forRoot(TypeOrmJsonApiModule, {
375
+ entities: [Users],
376
+ options: {
377
+ allowSetId: true,
378
+ },
379
+ }),
380
+ ],
381
+ })
382
+ export class AppModule {}
383
+ ```
384
+
385
+ With this option enabled, clients can include the `id` field in POST requests:
386
+
387
+ ```json
388
+ {
389
+ "data": {
390
+ "id": "550e8400-e29b-41d4-a716-446655440000",
391
+ "type": "users",
392
+ "attributes": {
393
+ "login": "johndoe",
394
+ "firstName": "John",
395
+ "lastName": "Doe"
396
+ }
397
+ }
398
+ }
399
+ ```
400
+
401
+ **Note:** When `allowSetId` is `false` (default), any `id` provided in the POST body will be ignored and the server will generate a new ID.
338
402
  ### Update item of Users
339
403
  ```
340
404
  PATCH /users/:id
@@ -371,30 +435,169 @@ type FilterOperand
371
435
 
372
436
  ```
373
437
 
374
- ### Atomic operation
375
- You can more information find [here](https://jsonapi.org/ext/atomic/)
376
- But you have additinal feature.
377
- For example: you will need create new **Roles**, then - create new **Users** and assign new **Roles** to new **Users**.
378
- If use native json api you need send 3 http request:
379
- - POST /roles
380
- - POST /users
438
+ ### Meta Support
439
+
440
+ The library supports the `meta` member in JSON:API requests and responses according to the [JSON:API specification](https://jsonapi.org/format/#document-meta). Meta allows passing additional non-standard information that doesn't belong to resource attributes.
441
+
442
+ **Use cases:**
443
+ - Request tracking (correlation IDs, client versions, timestamps)
444
+ - Business logic metadata (import source, batch IDs, priority levels)
445
+ - Audit information (user context, operation reason)
446
+
447
+ #### Meta in Regular Operations
448
+
449
+ Meta is supported in POST, PATCH, and relationship operations:
381
450
 
382
- but [Atomic operation](https://jsonapi.org/ext/atomic/) allow for one request.
451
+ **POST Request with Meta:**
383
452
  ```json
453
+ POST /users
454
+ {
455
+ "data": {
456
+ "type": "users",
457
+ "attributes": {
458
+ "login": "johndoe",
459
+ "firstName": "John"
460
+ }
461
+ },
462
+ "meta": {
463
+ "source": "mobile-app",
464
+ "version": "1.0.2",
465
+ "correlationId": "abc-123"
466
+ }
467
+ }
468
+ ```
384
469
 
470
+ **PATCH Request with Meta:**
471
+ ```json
472
+ PATCH /users/1
473
+ {
474
+ "data": {
475
+ "id": "1",
476
+ "type": "users",
477
+ "attributes": {
478
+ "firstName": "Jane"
479
+ }
480
+ },
481
+ "meta": {
482
+ "reason": "name-change-request",
483
+ "approvedBy": "admin"
484
+ }
485
+ }
486
+ ```
487
+
488
+ **Relationship Operations with Meta:**
489
+ ```json
490
+ POST /users/1/relationships/roles
491
+ {
492
+ "data": [
493
+ { "type": "roles", "id": "2" }
494
+ ],
495
+ "meta": {
496
+ "assignedBy": "admin",
497
+ "expiresAt": "2024-12-31"
498
+ }
499
+ }
500
+ ```
501
+
502
+ **Note:** DELETE operations do not support meta as per JSON:API specification.
503
+
504
+ #### Accessing Meta in Controllers
505
+
506
+ Meta is automatically extracted and passed as a parameter to controller methods:
507
+
508
+ ```typescript
509
+ import { JsonApi, JsonBaseController } from '@klerick/json-api-nestjs';
510
+ import { Body } from '@nestjs/common';
511
+
512
+ @JsonApi(Users)
513
+ export class UsersController extends JsonBaseController<Users> {
514
+ override async postOne(
515
+ @Body() inputData: PostData<Users>,
516
+ @Body() meta: Record<string, unknown>
517
+ ) {
518
+ // Access meta fields
519
+ console.log('Source:', meta.source);
520
+ console.log('Correlation ID:', meta.correlationId);
521
+
522
+ // Return response with meta
523
+ const response = await super.postOne(inputData);
524
+ return {
525
+ ...response,
526
+ meta: {
527
+ ...meta,
528
+ processedAt: Date.now(),
529
+ processedBy: 'server'
530
+ }
531
+ };
532
+ }
533
+ }
534
+ ```
535
+
536
+ #### Custom Meta Validation
537
+
538
+ You can add custom validation for meta using NestJS pipes:
539
+
540
+ ```typescript
541
+ import { PipeTransform, BadRequestException } from '@nestjs/common';
542
+ import { z } from 'zod';
543
+
544
+ // Define meta schema
545
+ const CustomMetaSchema = z.object({
546
+ source: z.string(),
547
+ version: z.string().regex(/^\d+\.\d+\.\d+$/),
548
+ correlationId: z.string().uuid().optional()
549
+ });
550
+
551
+ type CustomMeta = z.infer<typeof CustomMetaSchema>;
552
+
553
+ // Custom validation pipe
554
+ export class MetaValidationPipe implements PipeTransform<unknown, CustomMeta> {
555
+ transform(value: unknown): CustomMeta {
556
+ try {
557
+ return CustomMetaSchema.parse(value);
558
+ } catch (e) {
559
+ throw new BadRequestException('Invalid meta format');
560
+ }
561
+ }
562
+ }
563
+
564
+ // Use in controller
565
+ @JsonApi(Users)
566
+ export class UsersController extends JsonBaseController<Users> {
567
+ override async postOne(
568
+ @Body() inputData: PostData<Users>,
569
+ @Body(MetaValidationPipe) meta: CustomMeta
570
+ ) {
571
+ // meta is now validated and typed
572
+ console.log(meta.version); // TypeScript knows this exists
573
+ return super.postOne(inputData);
574
+ }
575
+ }
576
+ ```
577
+
578
+ ### Atomic Operations
579
+
580
+ The library implements the [JSON:API Atomic Operations Extension](https://jsonapi.org/ext/atomic/), allowing you to execute multiple operations in a single HTTP request with transaction support.
581
+
582
+ **Use case:** Create multiple related resources in one atomic request instead of multiple sequential HTTP requests.
583
+
584
+ Example: Create a new **Role**, create a new **User**, and assign the role to the user - all in one request instead of three separate requests.
585
+
586
+ **Request Example:**
587
+ ```json
385
588
  {
386
589
  "atomic:operations":[
387
590
  {
388
591
  "op":"add",
389
592
  "ref":{
390
593
  "type":"roles",
391
- "tmpId":10000
594
+ "lid":10000
392
595
  },
393
596
  "data":{
394
597
  "type":"roles",
395
598
  "attributes":{
396
- "name":"testRolesAgain",
397
- "key":"testRolesAgain"
599
+ "name":"admin",
600
+ "key":"admin_role"
398
601
  }
399
602
  }
400
603
  },
@@ -406,27 +609,100 @@ but [Atomic operation](https://jsonapi.org/ext/atomic/) allow for one request.
406
609
  "data":{
407
610
  "type":"users",
408
611
  "attributes":{
409
- "login":"newLogin"
612
+ "login":"johndoe",
613
+ "firstName":"John",
614
+ "lastName":"Doe"
410
615
  },
411
616
  "relationships":{
412
617
  "addresses":{
413
- "type":"addresses",
414
- "id":"1"
415
- },
416
- "roles":[
417
- {
418
- "type":"roles",
419
- "id":"10000"
618
+ "data":{
619
+ "type":"addresses",
620
+ "id":"1"
420
621
  }
421
- ]
622
+ },
623
+ "roles":{
624
+ "data":[
625
+ {
626
+ "type":"roles",
627
+ "id":"10000"
628
+ }
629
+ ]
630
+ }
422
631
  }
423
632
  }
424
633
  }
425
634
  ]
426
635
  }
636
+ ```
637
+
638
+ **Local Identifiers (lid):**
639
+ - The `lid` (local identifier) parameter allows referencing resources created within the same atomic request
640
+ - Must be unique across all operations in the request
641
+ - Used in the `ref.lid` field for the operation creating the resource
642
+ - Referenced in `relationships.{relation}.data.id` to establish relationships
643
+ - Automatically replaced with real database IDs by the server
644
+
645
+ **Meta Support in Atomic Operations:**
646
+
647
+ Each operation can include a `meta` object for additional metadata:
427
648
 
649
+ ```json
650
+ {
651
+ "atomic:operations": [
652
+ {
653
+ "op": "add",
654
+ "ref": { "type": "users", "lid": 1000 },
655
+ "data": {
656
+ "type": "users",
657
+ "attributes": { "login": "john" }
658
+ },
659
+ "meta": {
660
+ "source": "bulk-import",
661
+ "batchId": "batch-123",
662
+ "priority": "high"
663
+ }
664
+ },
665
+ {
666
+ "op": "update",
667
+ "ref": { "type": "users", "id": "5" },
668
+ "data": {
669
+ "type": "users",
670
+ "attributes": { "isActive": false }
671
+ },
672
+ "meta": {
673
+ "reason": "account-suspension",
674
+ "requestedBy": "admin"
675
+ }
676
+ }
677
+ ]
678
+ }
679
+ ```
680
+
681
+ Meta is passed to controller methods just like in regular operations, allowing you to:
682
+ - Track operation context
683
+ - Apply business logic based on metadata
684
+ - Include metadata in response
685
+
686
+ **Supported Operations:**
687
+ - `add` - Create a new resource (equivalent to POST)
688
+ - `update` - Update an existing resource (equivalent to PATCH)
689
+ - `remove` - Delete a resource (equivalent to DELETE)
690
+
691
+ **Transaction Guarantees:**
692
+ All operations in an atomic request execute within a single database transaction:
693
+ - If all operations succeed → transaction commits
694
+ - If any operation fails → entire transaction rolls back (no partial changes)
695
+
696
+ **Configuration:**
697
+ ```typescript
698
+ JsonApiModule.forRoot(TypeOrmJsonApiModule, {
699
+ entities: [Users, Roles],
700
+ options: {
701
+ operationUrl: 'operation', // Default endpoint: POST /operation
702
+ allowSetId: true, // Allow clients to set IDs (useful for UUIDs)
703
+ }
704
+ })
428
705
  ```
429
- **tmpId** - is params for operation **add**, should be unique for all operations.
430
706
 
431
707
  If you have Interceptor you can check call it from **AtomicOperation**
432
708
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@klerick/json-api-nestjs",
3
- "version": "10.0.0-beta.9",
3
+ "version": "10.0.0",
4
4
  "type": "commonjs",
5
5
  "description": "JsonApi Plugin for NestJs",
6
6
  "keywords": [
@@ -21,15 +21,11 @@
21
21
  "tslib": ">2.3.0"
22
22
  },
23
23
  "dependencies": {
24
- "@klerick/json-api-nestjs-shared": "^1.0.0-beta.4",
24
+ "@klerick/json-api-nestjs-shared": "^1.0.0-beta.8",
25
+ "ts-toolbelt": "^9.6.0",
25
26
  "zod": "^4.1.0",
26
27
  "zod-validation-error": "^4.0.0"
27
28
  },
28
- "overrides": {
29
- "mikro-orm-pglite": {
30
- "@mikro-orm/postgresql": "^6.4.0"
31
- }
32
- },
33
29
  "exports": {
34
30
  "./package.json": "./package.json",
35
31
  ".": {
@@ -51,7 +47,7 @@
51
47
  "url": "https://github.com/klerick/nestjs-json-api.git"
52
48
  },
53
49
  "engines": {
54
- "node": ">= 20.0.0"
50
+ "node": "^22.22.3 || ^24.15.0 || >=26.0.0"
55
51
  },
56
52
  "files": [
57
53
  "**/*"
package/src/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { JsonApiModule } from './lib/json-api.module';
2
2
  export { JsonBaseController } from './lib/modules/mixin/controllers/json-base.controller';
3
- export { JsonApi, InjectService, JsonApiReadOnly, JsonApiImmutable } from './lib/modules/mixin/decorators';
3
+ export { JsonApi, InjectService, JsonApiReadOnly, JsonApiImmutable, JsonApiResponseFrom } from './lib/modules/mixin/decorators';
4
4
  export { entityForClass, excludeMethod, patchInputData, } from './lib/modules/mixin/helpers/utils';
5
5
  export { PrepareParams, NestProvider, ValidateQueryError, UnionToTuple, EntityParam, TypeField, Params, JsonApiReadOnlyField, JsonApiImmutableField, } from './lib/types';
6
6
  export { JsonApiTransformerService, ErrorFormatService, EntityParamMapService } from './lib/modules/mixin/service';
package/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.METHOD_NAME = exports.CURRENT_ENTITY = exports.DEFAULT_QUERY_PAGE = exports.DEFAULT_PAGE_SIZE = exports.ENTITY_PARAM_MAP = exports.ORM_SERVICE = exports.RUN_IN_TRANSACTION_FUNCTION = exports.CHECK_RELATION_NAME = exports.FIND_ONE_ROW_ENTITY = exports.DESC = exports.ASC = exports.CONTROLLER_OPTIONS_TOKEN = exports.MODULE_OPTIONS_TOKEN = exports.EntityParamMapService = exports.ErrorFormatService = exports.JsonApiTransformerService = exports.TypeField = exports.patchInputData = exports.excludeMethod = exports.entityForClass = exports.JsonApiImmutable = exports.JsonApiReadOnly = exports.InjectService = exports.JsonApi = exports.JsonBaseController = exports.JsonApiModule = void 0;
3
+ exports.METHOD_NAME = exports.CURRENT_ENTITY = exports.DEFAULT_QUERY_PAGE = exports.DEFAULT_PAGE_SIZE = exports.ENTITY_PARAM_MAP = exports.ORM_SERVICE = exports.RUN_IN_TRANSACTION_FUNCTION = exports.CHECK_RELATION_NAME = exports.FIND_ONE_ROW_ENTITY = exports.DESC = exports.ASC = exports.CONTROLLER_OPTIONS_TOKEN = exports.MODULE_OPTIONS_TOKEN = exports.EntityParamMapService = exports.ErrorFormatService = exports.JsonApiTransformerService = exports.TypeField = exports.patchInputData = exports.excludeMethod = exports.entityForClass = exports.JsonApiResponseFrom = exports.JsonApiImmutable = exports.JsonApiReadOnly = exports.InjectService = exports.JsonApi = exports.JsonBaseController = exports.JsonApiModule = void 0;
4
4
  var json_api_module_1 = require("./lib/json-api.module");
5
5
  Object.defineProperty(exports, "JsonApiModule", { enumerable: true, get: function () { return json_api_module_1.JsonApiModule; } });
6
6
  var json_base_controller_1 = require("./lib/modules/mixin/controllers/json-base.controller");
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "JsonApi", { enumerable: true, get: function () {
10
10
  Object.defineProperty(exports, "InjectService", { enumerable: true, get: function () { return decorators_1.InjectService; } });
11
11
  Object.defineProperty(exports, "JsonApiReadOnly", { enumerable: true, get: function () { return decorators_1.JsonApiReadOnly; } });
12
12
  Object.defineProperty(exports, "JsonApiImmutable", { enumerable: true, get: function () { return decorators_1.JsonApiImmutable; } });
13
+ Object.defineProperty(exports, "JsonApiResponseFrom", { enumerable: true, get: function () { return decorators_1.JsonApiResponseFrom; } });
13
14
  var utils_1 = require("./lib/modules/mixin/helpers/utils");
14
15
  Object.defineProperty(exports, "entityForClass", { enumerable: true, get: function () { return utils_1.entityForClass; } });
15
16
  Object.defineProperty(exports, "excludeMethod", { enumerable: true, get: function () { return utils_1.excludeMethod; } });
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/json-api/json-api-nestjs/src/index.ts"],"names":[],"mappings":";;;AAAA,yDAAsD;AAA7C,gHAAA,aAAa,OAAA;AAEtB,6FAA0F;AAAjF,0HAAA,kBAAkB,OAAA;AAC3B,6DAA2G;AAAlG,qGAAA,OAAO,OAAA;AAAE,2GAAA,aAAa,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAClE,2DAI2C;AAHzC,uGAAA,cAAc,OAAA;AACd,sGAAA,aAAa,OAAA;AACb,uGAAA,cAAc,OAAA;AAEhB,qCAUqB;AAJnB,kGAAA,SAAS,OAAA;AAKX,uDAIqC;AAHnC,oHAAA,yBAAyB,OAAA;AACzB,6GAAA,kBAAkB,OAAA;AAClB,gHAAA,qBAAqB,OAAA;AAEvB,6CAcyB;AAbvB,iHAAA,oBAAoB,OAAA;AACpB,qHAAA,wBAAwB,OAAA;AACxB,gGAAA,GAAG,OAAA;AACH,iGAAA,IAAI,OAAA;AACJ,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,wHAAA,2BAA2B,OAAA;AAC3B,wGAAA,WAAW,OAAA;AACX,6GAAA,gBAAgB,OAAA;AAChB,8GAAA,iBAAiB,OAAA;AACjB,+GAAA,kBAAkB,OAAA;AAClB,2GAAA,cAAc,OAAA;AACd,wGAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/json-api/json-api-nestjs/src/index.ts"],"names":[],"mappings":";;;AAAA,yDAAsD;AAA7C,gHAAA,aAAa,OAAA;AAEtB,6FAA0F;AAAjF,0HAAA,kBAAkB,OAAA;AAC3B,6DAAgI;AAAvH,qGAAA,OAAO,OAAA;AAAE,2GAAA,aAAa,OAAA;AAAE,6GAAA,eAAe,OAAA;AAAE,8GAAA,gBAAgB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AACvF,2DAI2C;AAHzC,uGAAA,cAAc,OAAA;AACd,sGAAA,aAAa,OAAA;AACb,uGAAA,cAAc,OAAA;AAEhB,qCAUqB;AAJnB,kGAAA,SAAS,OAAA;AAKX,uDAIqC;AAHnC,oHAAA,yBAAyB,OAAA;AACzB,6GAAA,kBAAkB,OAAA;AAClB,gHAAA,qBAAqB,OAAA;AAEvB,6CAcyB;AAbvB,iHAAA,oBAAoB,OAAA;AACpB,qHAAA,wBAAwB,OAAA;AACxB,gGAAA,GAAG,OAAA;AACH,iGAAA,IAAI,OAAA;AACJ,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,wHAAA,2BAA2B,OAAA;AAC3B,wGAAA,WAAW,OAAA;AACX,6GAAA,gBAAgB,OAAA;AAChB,8GAAA,iBAAiB,OAAA;AACjB,+GAAA,kBAAkB,OAAA;AAClB,2GAAA,cAAc,OAAA;AACd,wGAAA,WAAW,OAAA"}
@@ -9,6 +9,7 @@ export declare const ZOD_POST_SCHEMA: unique symbol;
9
9
  export declare const ZOD_PATCH_SCHEMA: unique symbol;
10
10
  export declare const ZOD_POST_RELATIONSHIP_SCHEMA: unique symbol;
11
11
  export declare const ZOD_PATCH_RELATIONSHIP_SCHEMA: unique symbol;
12
+ export declare const ZOD_META_SCHEMA: unique symbol;
12
13
  export declare const FIND_ONE_ROW_ENTITY: unique symbol;
13
14
  export declare const CHECK_RELATION_NAME: unique symbol;
14
15
  export declare const RUN_IN_TRANSACTION_FUNCTION: unique symbol;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RUN_IN_TRANSACTION_FUNCTION = exports.CHECK_RELATION_NAME = exports.FIND_ONE_ROW_ENTITY = exports.ZOD_PATCH_RELATIONSHIP_SCHEMA = exports.ZOD_POST_RELATIONSHIP_SCHEMA = exports.ZOD_PATCH_SCHEMA = exports.ZOD_POST_SCHEMA = exports.ZOD_QUERY_SCHEMA = exports.ZOD_INPUT_QUERY_SCHEMA = exports.ENTITY_PARAM_MAP = exports.CURRENT_ENTITY = exports.CONTROLLER_OPTIONS_TOKEN = exports.MODULE_OPTIONS_TOKEN = exports.ORM_SERVICE = void 0;
3
+ exports.RUN_IN_TRANSACTION_FUNCTION = exports.CHECK_RELATION_NAME = exports.FIND_ONE_ROW_ENTITY = exports.ZOD_META_SCHEMA = exports.ZOD_PATCH_RELATIONSHIP_SCHEMA = exports.ZOD_POST_RELATIONSHIP_SCHEMA = exports.ZOD_PATCH_SCHEMA = exports.ZOD_POST_SCHEMA = exports.ZOD_QUERY_SCHEMA = exports.ZOD_INPUT_QUERY_SCHEMA = exports.ENTITY_PARAM_MAP = exports.CURRENT_ENTITY = exports.CONTROLLER_OPTIONS_TOKEN = exports.MODULE_OPTIONS_TOKEN = exports.ORM_SERVICE = void 0;
4
4
  exports.ORM_SERVICE = Symbol('ORM_SERVICE');
5
5
  exports.MODULE_OPTIONS_TOKEN = Symbol('MODULE_OPTIONS_TOKEN');
6
6
  exports.CONTROLLER_OPTIONS_TOKEN = Symbol('CONTROLLER_OPTIONS_TOKEN');
@@ -12,6 +12,7 @@ exports.ZOD_POST_SCHEMA = Symbol('ZOD_POST_SCHEMA');
12
12
  exports.ZOD_PATCH_SCHEMA = Symbol('ZOD_PATCH_SCHEMA');
13
13
  exports.ZOD_POST_RELATIONSHIP_SCHEMA = Symbol('ZOD_POST_RELATIONSHIP_SCHEMA');
14
14
  exports.ZOD_PATCH_RELATIONSHIP_SCHEMA = Symbol('ZOD_PATCH_RELATIONSHIP_SCHEMA');
15
+ exports.ZOD_META_SCHEMA = Symbol('ZOD_META_SCHEMA');
15
16
  exports.FIND_ONE_ROW_ENTITY = Symbol('FIND_ONE_ROW_ENTITY');
16
17
  exports.CHECK_RELATION_NAME = Symbol('CHECK_RELATION_NAME');
17
18
  exports.RUN_IN_TRANSACTION_FUNCTION = Symbol('RUN_IN_TRANSACTION_FUNCTION');
@@ -1 +1 @@
1
- {"version":3,"file":"di.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs/src/lib/constants/di.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAEpC,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACtD,QAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAE9D,QAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC1C,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE9C,QAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC1D,QAAA,gBAAgB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACpD,QAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC5C,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC9C,QAAA,4BAA4B,GAAG,MAAM,CAChD,8BAA8B,CAC/B,CAAC;AACW,QAAA,6BAA6B,GAAG,MAAM,CACjD,+BAA+B,CAChC,CAAC;AAEW,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACpD,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACpD,QAAA,2BAA2B,GAAG,MAAM,CAC/C,6BAA6B,CAC9B,CAAC"}
1
+ {"version":3,"file":"di.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs/src/lib/constants/di.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AAEpC,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACtD,QAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAE9D,QAAA,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC1C,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE9C,QAAA,sBAAsB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC1D,QAAA,gBAAgB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACpD,QAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC5C,QAAA,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC9C,QAAA,4BAA4B,GAAG,MAAM,CAChD,8BAA8B,CAC/B,CAAC;AACW,QAAA,6BAA6B,GAAG,MAAM,CACjD,+BAA+B,CAChC,CAAC;AACW,QAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE5C,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACpD,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACpD,QAAA,2BAA2B,GAAG,MAAM,CAC/C,6BAA6B,CAC9B,CAAC"}
@@ -17,7 +17,8 @@ let JsonApiModule = JsonApiModule_1 = class JsonApiModule {
17
17
  if (!commonOrmModule.providers ||
18
18
  !commonOrmModule.providers.find((i) => 'provide' in i && i.provide === constants_1.ENTITY_PARAM_MAP))
19
19
  throw new Error(`The module ${module.name} should be provide ${constants_1.ENTITY_PARAM_MAP.description}`);
20
- const entitiesModules = prepareOptions.entities.map((entityItem) => modules_1.MixinModule.forRoot({
20
+ const entitiesForControllers = prepareOptions.entities.filter((entity) => !prepareOptions.excludeControllers.includes(entity));
21
+ const entitiesModules = entitiesForControllers.map((entityItem) => modules_1.MixinModule.forRoot({
21
22
  entity: entityItem,
22
23
  imports: [commonOrmModule, ...prepareOptions.imports],
23
24
  ormModule: module,
@@ -25,7 +26,7 @@ let JsonApiModule = JsonApiModule_1 = class JsonApiModule {
25
26
  config: prepareOptions,
26
27
  }));
27
28
  const atomicOperation = prepareOptions.options.operationUrl
28
- ? modules_1.AtomicOperationModule.forRoot(prepareOptions.options.operationUrl, prepareOptions.entities, entitiesModules, commonOrmModule)
29
+ ? modules_1.AtomicOperationModule.forRoot(prepareOptions.options.operationUrl, entitiesModules, commonOrmModule)
29
30
  : [];
30
31
  return {
31
32
  module: JsonApiModule_1,