@elsikora/nestjs-crud-automator 1.16.0 → 1.17.0-dev.1

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 (280) hide show
  1. package/README.md +43 -0
  2. package/dist/cjs/class/api/authorization/engine.class.d.ts +8 -0
  3. package/dist/cjs/class/api/authorization/engine.class.js +92 -0
  4. package/dist/cjs/class/api/authorization/engine.class.js.map +1 -0
  5. package/dist/cjs/class/api/authorization/guard.class.d.ts +13 -0
  6. package/dist/cjs/class/api/authorization/guard.class.js +79 -0
  7. package/dist/cjs/class/api/authorization/guard.class.js.map +1 -0
  8. package/dist/cjs/class/api/authorization/index.d.ts +3 -0
  9. package/dist/cjs/class/api/authorization/policy/base.class.d.ts +37 -0
  10. package/dist/cjs/class/api/authorization/policy/base.class.js +68 -0
  11. package/dist/cjs/class/api/authorization/policy/base.class.js.map +1 -0
  12. package/dist/cjs/class/api/authorization/policy/discovery-service.class.d.ts +10 -0
  13. package/dist/cjs/class/api/authorization/policy/discovery-service.class.js +53 -0
  14. package/dist/cjs/class/api/authorization/policy/discovery-service.class.js.map +1 -0
  15. package/dist/cjs/class/api/authorization/policy/executor.class.d.ts +8 -0
  16. package/dist/cjs/class/api/authorization/policy/executor.class.js +43 -0
  17. package/dist/cjs/class/api/authorization/policy/executor.class.js.map +1 -0
  18. package/dist/cjs/class/api/authorization/policy/index.d.ts +4 -0
  19. package/dist/cjs/class/api/authorization/policy/registry.class.d.ts +26 -0
  20. package/dist/cjs/class/api/authorization/policy/registry.class.js +151 -0
  21. package/dist/cjs/class/api/authorization/policy/registry.class.js.map +1 -0
  22. package/dist/cjs/class/api/service-base.class.d.ts +2 -2
  23. package/dist/cjs/class/api/service-base.class.js.map +1 -1
  24. package/dist/cjs/class/index.d.ts +1 -0
  25. package/dist/cjs/constant/authorization/index.d.ts +3 -0
  26. package/dist/cjs/constant/authorization/metadata/decision.constant.d.ts +3 -0
  27. package/dist/cjs/constant/authorization/metadata/decision.constant.js +9 -0
  28. package/dist/cjs/constant/authorization/metadata/decision.constant.js.map +1 -0
  29. package/dist/cjs/constant/authorization/metadata/index.d.ts +1 -0
  30. package/dist/cjs/constant/authorization/policy/decorator.constant.d.ts +4 -0
  31. package/dist/cjs/constant/authorization/policy/decorator.constant.js +11 -0
  32. package/dist/cjs/constant/authorization/policy/decorator.constant.js.map +1 -0
  33. package/dist/cjs/constant/authorization/policy/index.d.ts +1 -0
  34. package/dist/cjs/constant/authorization/token/index.d.ts +1 -0
  35. package/dist/cjs/constant/authorization/token/registry.constant.d.ts +1 -0
  36. package/dist/cjs/constant/authorization/token/registry.constant.js +7 -0
  37. package/dist/cjs/constant/authorization/token/registry.constant.js.map +1 -0
  38. package/dist/cjs/constant/decorator/api/controller.constant.d.ts +2 -0
  39. package/dist/cjs/constant/decorator/api/controller.constant.js +4 -0
  40. package/dist/cjs/constant/decorator/api/controller.constant.js.map +1 -1
  41. package/dist/cjs/constant/index.d.ts +1 -0
  42. package/dist/cjs/decorator/api/authorization/index.d.ts +1 -0
  43. package/dist/cjs/decorator/api/authorization/policy.decorator.d.ts +9 -0
  44. package/dist/cjs/decorator/api/authorization/policy.decorator.js +25 -0
  45. package/dist/cjs/decorator/api/authorization/policy.decorator.js.map +1 -0
  46. package/dist/cjs/decorator/api/controller/index.d.ts +1 -0
  47. package/dist/cjs/decorator/api/controller/securable.decorator.d.ts +6 -0
  48. package/dist/cjs/decorator/api/controller/securable.decorator.js +17 -0
  49. package/dist/cjs/decorator/api/controller/securable.decorator.js.map +1 -0
  50. package/dist/cjs/decorator/api/index.d.ts +1 -0
  51. package/dist/cjs/decorator/api/method.decorator.js +7 -1
  52. package/dist/cjs/decorator/api/method.decorator.js.map +1 -1
  53. package/dist/cjs/enum/authorization/effect.enum.d.ts +4 -0
  54. package/dist/cjs/enum/authorization/effect.enum.js +8 -0
  55. package/dist/cjs/enum/authorization/effect.enum.js.map +1 -0
  56. package/dist/cjs/enum/authorization/index.d.ts +2 -0
  57. package/dist/cjs/enum/authorization/policy/index.d.ts +1 -0
  58. package/dist/cjs/enum/authorization/policy/on-type.enum.d.ts +3 -0
  59. package/dist/cjs/enum/authorization/policy/on-type.enum.js +7 -0
  60. package/dist/cjs/enum/authorization/policy/on-type.enum.js.map +1 -0
  61. package/dist/cjs/enum/index.d.ts +1 -0
  62. package/dist/cjs/external/tslib/tslib.es6.js +5 -0
  63. package/dist/cjs/external/tslib/tslib.es6.js.map +1 -1
  64. package/dist/cjs/factory/api/controller.factory.js +63 -28
  65. package/dist/cjs/factory/api/controller.factory.js.map +1 -1
  66. package/dist/cjs/index.js +60 -4
  67. package/dist/cjs/index.js.map +1 -1
  68. package/dist/cjs/interface/api-authentication-request.interface.d.ts +3 -0
  69. package/dist/cjs/interface/authorization/decision.interface.d.ts +17 -0
  70. package/dist/cjs/interface/authorization/engine.interface.d.ts +6 -0
  71. package/dist/cjs/interface/authorization/evaluate-options.interface.d.ts +9 -0
  72. package/dist/cjs/interface/authorization/index.d.ts +7 -0
  73. package/dist/cjs/interface/authorization/policy/index.d.ts +3 -0
  74. package/dist/cjs/interface/authorization/policy/interface.d.ts +9 -0
  75. package/dist/cjs/interface/authorization/policy/registry.interface.d.ts +10 -0
  76. package/dist/cjs/interface/authorization/policy/subscriber/context.interface.d.ts +9 -0
  77. package/dist/cjs/interface/authorization/policy/subscriber/index.d.ts +5 -0
  78. package/dist/cjs/interface/authorization/policy/subscriber/interface.d.ts +14 -0
  79. package/dist/cjs/interface/authorization/policy/subscriber/properties.interface.d.ts +7 -0
  80. package/dist/cjs/interface/authorization/policy/subscriber/registration.interface.d.ts +9 -0
  81. package/dist/cjs/interface/authorization/policy/subscriber/rule.interface.d.ts +13 -0
  82. package/dist/cjs/interface/authorization/rule/context.interface.d.ts +6 -0
  83. package/dist/cjs/interface/authorization/rule/index.d.ts +2 -0
  84. package/dist/cjs/interface/authorization/rule/interface.d.ts +15 -0
  85. package/dist/cjs/interface/authorization/scope.interface.d.ts +5 -0
  86. package/dist/cjs/interface/authorization/subject.interface.d.ts +6 -0
  87. package/dist/cjs/interface/class/api/subscriber/route-execution-context-data.interface.d.ts +7 -1
  88. package/dist/cjs/interface/index.d.ts +1 -0
  89. package/dist/cjs/module/api/authorization.module.d.ts +7 -0
  90. package/dist/cjs/module/api/authorization.module.js +39 -0
  91. package/dist/cjs/module/api/authorization.module.js.map +1 -0
  92. package/dist/cjs/module/api/index.d.ts +2 -0
  93. package/dist/cjs/module/{api-subscriber.module.js → api/subscriber.module.js} +3 -3
  94. package/dist/cjs/module/api/subscriber.module.js.map +1 -0
  95. package/dist/cjs/module/index.d.ts +1 -1
  96. package/dist/cjs/type/class/api/authorization/guard-request.type.d.ts +7 -0
  97. package/dist/cjs/type/class/api/authorization/index.d.ts +4 -0
  98. package/dist/cjs/type/class/api/authorization/policy/hook/index.d.ts +2 -0
  99. package/dist/cjs/type/class/api/authorization/policy/hook/result.type.d.ts +8 -0
  100. package/dist/cjs/type/class/api/authorization/policy/hook/type.d.ts +5 -0
  101. package/dist/cjs/type/class/api/authorization/policy/index.d.ts +2 -0
  102. package/dist/cjs/type/class/api/authorization/policy/policy-subscriber-rule-result.type.d.ts +3 -0
  103. package/dist/cjs/type/class/api/authorization/rule/condition.type.d.ts +3 -0
  104. package/dist/cjs/type/class/api/authorization/rule/index.d.ts +4 -0
  105. package/dist/cjs/type/class/api/authorization/rule/result-transform.type.d.ts +4 -0
  106. package/dist/cjs/type/class/api/authorization/rule/scope-resolver.type.d.ts +4 -0
  107. package/dist/cjs/type/class/api/authorization/rule/transform-payload.type.d.ts +3 -0
  108. package/dist/cjs/type/class/api/authorization/scope-where.type.d.ts +3 -0
  109. package/dist/cjs/type/class/api/subscriber/route/after/create-context.type.d.ts +1 -1
  110. package/dist/cjs/type/class/api/subscriber/route/after/delete-context.type.d.ts +1 -1
  111. package/dist/cjs/type/class/api/subscriber/route/after/get/context.type.d.ts +1 -1
  112. package/dist/cjs/type/class/api/subscriber/route/after/get/list-context.type.d.ts +2 -1
  113. package/dist/cjs/type/class/api/subscriber/route/after/get/many-context.type.d.ts +1 -1
  114. package/dist/cjs/type/class/api/subscriber/route/after/update-context.type.d.ts +1 -1
  115. package/dist/cjs/type/index.d.ts +1 -0
  116. package/dist/cjs/utility/api/controller/apply-metadata.utility.js +3 -5
  117. package/dist/cjs/utility/api/controller/apply-metadata.utility.js.map +1 -1
  118. package/dist/cjs/utility/authorization/decision/apply-result.utility.d.ts +12 -0
  119. package/dist/cjs/utility/authorization/decision/apply-result.utility.js +27 -0
  120. package/dist/cjs/utility/authorization/decision/apply-result.utility.js.map +1 -0
  121. package/dist/cjs/utility/authorization/decision/attach-resource.utility.d.ts +11 -0
  122. package/dist/cjs/utility/authorization/decision/attach-resource.utility.js +20 -0
  123. package/dist/cjs/utility/authorization/decision/attach-resource.utility.js.map +1 -0
  124. package/dist/cjs/utility/authorization/decision/index.d.ts +3 -0
  125. package/dist/cjs/utility/authorization/decision/resolve-from-request.utility.d.ts +12 -0
  126. package/dist/cjs/utility/authorization/decision/resolve-from-request.utility.js +22 -0
  127. package/dist/cjs/utility/authorization/decision/resolve-from-request.utility.js.map +1 -0
  128. package/dist/cjs/utility/authorization/index.d.ts +3 -0
  129. package/dist/cjs/utility/authorization/scope/index.d.ts +1 -0
  130. package/dist/cjs/utility/authorization/scope/merge/index.d.ts +1 -0
  131. package/dist/cjs/utility/authorization/scope/merge/where.utility.d.ts +10 -0
  132. package/dist/cjs/utility/authorization/scope/merge/where.utility.js +32 -0
  133. package/dist/cjs/utility/authorization/scope/merge/where.utility.js.map +1 -0
  134. package/dist/cjs/utility/authorization/subject/index.d.ts +1 -0
  135. package/dist/cjs/utility/authorization/subject/resolve-default-subject.utility.d.ts +7 -0
  136. package/dist/cjs/utility/authorization/subject/resolve-default-subject.utility.js +52 -0
  137. package/dist/cjs/utility/authorization/subject/resolve-default-subject.utility.js.map +1 -0
  138. package/dist/cjs/utility/index.d.ts +1 -0
  139. package/dist/esm/class/api/authorization/engine.class.d.ts +8 -0
  140. package/dist/esm/class/api/authorization/engine.class.js +92 -0
  141. package/dist/esm/class/api/authorization/engine.class.js.map +1 -0
  142. package/dist/esm/class/api/authorization/guard.class.d.ts +13 -0
  143. package/dist/esm/class/api/authorization/guard.class.js +79 -0
  144. package/dist/esm/class/api/authorization/guard.class.js.map +1 -0
  145. package/dist/esm/class/api/authorization/index.d.ts +3 -0
  146. package/dist/esm/class/api/authorization/policy/base.class.d.ts +37 -0
  147. package/dist/esm/class/api/authorization/policy/base.class.js +66 -0
  148. package/dist/esm/class/api/authorization/policy/base.class.js.map +1 -0
  149. package/dist/esm/class/api/authorization/policy/discovery-service.class.d.ts +10 -0
  150. package/dist/esm/class/api/authorization/policy/discovery-service.class.js +53 -0
  151. package/dist/esm/class/api/authorization/policy/discovery-service.class.js.map +1 -0
  152. package/dist/esm/class/api/authorization/policy/executor.class.d.ts +8 -0
  153. package/dist/esm/class/api/authorization/policy/executor.class.js +41 -0
  154. package/dist/esm/class/api/authorization/policy/executor.class.js.map +1 -0
  155. package/dist/esm/class/api/authorization/policy/index.d.ts +4 -0
  156. package/dist/esm/class/api/authorization/policy/registry.class.d.ts +26 -0
  157. package/dist/esm/class/api/authorization/policy/registry.class.js +148 -0
  158. package/dist/esm/class/api/authorization/policy/registry.class.js.map +1 -0
  159. package/dist/esm/class/api/service-base.class.d.ts +2 -2
  160. package/dist/esm/class/api/service-base.class.js.map +1 -1
  161. package/dist/esm/class/index.d.ts +1 -0
  162. package/dist/esm/constant/authorization/index.d.ts +3 -0
  163. package/dist/esm/constant/authorization/metadata/decision.constant.d.ts +3 -0
  164. package/dist/esm/constant/authorization/metadata/decision.constant.js +7 -0
  165. package/dist/esm/constant/authorization/metadata/decision.constant.js.map +1 -0
  166. package/dist/esm/constant/authorization/metadata/index.d.ts +1 -0
  167. package/dist/esm/constant/authorization/policy/decorator.constant.d.ts +4 -0
  168. package/dist/esm/constant/authorization/policy/decorator.constant.js +9 -0
  169. package/dist/esm/constant/authorization/policy/decorator.constant.js.map +1 -0
  170. package/dist/esm/constant/authorization/policy/index.d.ts +1 -0
  171. package/dist/esm/constant/authorization/token/index.d.ts +1 -0
  172. package/dist/esm/constant/authorization/token/registry.constant.d.ts +1 -0
  173. package/dist/esm/constant/authorization/token/registry.constant.js +5 -0
  174. package/dist/esm/constant/authorization/token/registry.constant.js.map +1 -0
  175. package/dist/esm/constant/decorator/api/controller.constant.d.ts +2 -0
  176. package/dist/esm/constant/decorator/api/controller.constant.js +4 -0
  177. package/dist/esm/constant/decorator/api/controller.constant.js.map +1 -1
  178. package/dist/esm/constant/index.d.ts +1 -0
  179. package/dist/esm/decorator/api/authorization/index.d.ts +1 -0
  180. package/dist/esm/decorator/api/authorization/policy.decorator.d.ts +9 -0
  181. package/dist/esm/decorator/api/authorization/policy.decorator.js +23 -0
  182. package/dist/esm/decorator/api/authorization/policy.decorator.js.map +1 -0
  183. package/dist/esm/decorator/api/controller/index.d.ts +1 -0
  184. package/dist/esm/decorator/api/controller/securable.decorator.d.ts +6 -0
  185. package/dist/esm/decorator/api/controller/securable.decorator.js +15 -0
  186. package/dist/esm/decorator/api/controller/securable.decorator.js.map +1 -0
  187. package/dist/esm/decorator/api/index.d.ts +1 -0
  188. package/dist/esm/decorator/api/method.decorator.js +7 -1
  189. package/dist/esm/decorator/api/method.decorator.js.map +1 -1
  190. package/dist/esm/enum/authorization/effect.enum.d.ts +4 -0
  191. package/dist/esm/enum/authorization/effect.enum.js +8 -0
  192. package/dist/esm/enum/authorization/effect.enum.js.map +1 -0
  193. package/dist/esm/enum/authorization/index.d.ts +2 -0
  194. package/dist/esm/enum/authorization/policy/index.d.ts +1 -0
  195. package/dist/esm/enum/authorization/policy/on-type.enum.d.ts +3 -0
  196. package/dist/esm/enum/authorization/policy/on-type.enum.js +7 -0
  197. package/dist/esm/enum/authorization/policy/on-type.enum.js.map +1 -0
  198. package/dist/esm/enum/index.d.ts +1 -0
  199. package/dist/esm/external/tslib/tslib.es6.js +5 -1
  200. package/dist/esm/external/tslib/tslib.es6.js.map +1 -1
  201. package/dist/esm/factory/api/controller.factory.js +63 -28
  202. package/dist/esm/factory/api/controller.factory.js.map +1 -1
  203. package/dist/esm/index.js +20 -1
  204. package/dist/esm/index.js.map +1 -1
  205. package/dist/esm/interface/api-authentication-request.interface.d.ts +3 -0
  206. package/dist/esm/interface/authorization/decision.interface.d.ts +17 -0
  207. package/dist/esm/interface/authorization/engine.interface.d.ts +6 -0
  208. package/dist/esm/interface/authorization/evaluate-options.interface.d.ts +9 -0
  209. package/dist/esm/interface/authorization/index.d.ts +7 -0
  210. package/dist/esm/interface/authorization/policy/index.d.ts +3 -0
  211. package/dist/esm/interface/authorization/policy/interface.d.ts +9 -0
  212. package/dist/esm/interface/authorization/policy/registry.interface.d.ts +10 -0
  213. package/dist/esm/interface/authorization/policy/subscriber/context.interface.d.ts +9 -0
  214. package/dist/esm/interface/authorization/policy/subscriber/index.d.ts +5 -0
  215. package/dist/esm/interface/authorization/policy/subscriber/interface.d.ts +14 -0
  216. package/dist/esm/interface/authorization/policy/subscriber/properties.interface.d.ts +7 -0
  217. package/dist/esm/interface/authorization/policy/subscriber/registration.interface.d.ts +9 -0
  218. package/dist/esm/interface/authorization/policy/subscriber/rule.interface.d.ts +13 -0
  219. package/dist/esm/interface/authorization/rule/context.interface.d.ts +6 -0
  220. package/dist/esm/interface/authorization/rule/index.d.ts +2 -0
  221. package/dist/esm/interface/authorization/rule/interface.d.ts +15 -0
  222. package/dist/esm/interface/authorization/scope.interface.d.ts +5 -0
  223. package/dist/esm/interface/authorization/subject.interface.d.ts +6 -0
  224. package/dist/esm/interface/class/api/subscriber/route-execution-context-data.interface.d.ts +7 -1
  225. package/dist/esm/interface/index.d.ts +1 -0
  226. package/dist/esm/module/api/authorization.module.d.ts +7 -0
  227. package/dist/esm/module/api/authorization.module.js +39 -0
  228. package/dist/esm/module/api/authorization.module.js.map +1 -0
  229. package/dist/esm/module/api/index.d.ts +2 -0
  230. package/dist/esm/module/{api-subscriber.module.js → api/subscriber.module.js} +3 -3
  231. package/dist/esm/module/api/subscriber.module.js.map +1 -0
  232. package/dist/esm/module/index.d.ts +1 -1
  233. package/dist/esm/type/class/api/authorization/guard-request.type.d.ts +7 -0
  234. package/dist/esm/type/class/api/authorization/index.d.ts +4 -0
  235. package/dist/esm/type/class/api/authorization/policy/hook/index.d.ts +2 -0
  236. package/dist/esm/type/class/api/authorization/policy/hook/result.type.d.ts +8 -0
  237. package/dist/esm/type/class/api/authorization/policy/hook/type.d.ts +5 -0
  238. package/dist/esm/type/class/api/authorization/policy/index.d.ts +2 -0
  239. package/dist/esm/type/class/api/authorization/policy/policy-subscriber-rule-result.type.d.ts +3 -0
  240. package/dist/esm/type/class/api/authorization/rule/condition.type.d.ts +3 -0
  241. package/dist/esm/type/class/api/authorization/rule/index.d.ts +4 -0
  242. package/dist/esm/type/class/api/authorization/rule/result-transform.type.d.ts +4 -0
  243. package/dist/esm/type/class/api/authorization/rule/scope-resolver.type.d.ts +4 -0
  244. package/dist/esm/type/class/api/authorization/rule/transform-payload.type.d.ts +3 -0
  245. package/dist/esm/type/class/api/authorization/scope-where.type.d.ts +3 -0
  246. package/dist/esm/type/class/api/subscriber/route/after/create-context.type.d.ts +1 -1
  247. package/dist/esm/type/class/api/subscriber/route/after/delete-context.type.d.ts +1 -1
  248. package/dist/esm/type/class/api/subscriber/route/after/get/context.type.d.ts +1 -1
  249. package/dist/esm/type/class/api/subscriber/route/after/get/list-context.type.d.ts +2 -1
  250. package/dist/esm/type/class/api/subscriber/route/after/get/many-context.type.d.ts +1 -1
  251. package/dist/esm/type/class/api/subscriber/route/after/update-context.type.d.ts +1 -1
  252. package/dist/esm/type/index.d.ts +1 -0
  253. package/dist/esm/utility/api/controller/apply-metadata.utility.js +3 -5
  254. package/dist/esm/utility/api/controller/apply-metadata.utility.js.map +1 -1
  255. package/dist/esm/utility/authorization/decision/apply-result.utility.d.ts +12 -0
  256. package/dist/esm/utility/authorization/decision/apply-result.utility.js +25 -0
  257. package/dist/esm/utility/authorization/decision/apply-result.utility.js.map +1 -0
  258. package/dist/esm/utility/authorization/decision/attach-resource.utility.d.ts +11 -0
  259. package/dist/esm/utility/authorization/decision/attach-resource.utility.js +18 -0
  260. package/dist/esm/utility/authorization/decision/attach-resource.utility.js.map +1 -0
  261. package/dist/esm/utility/authorization/decision/index.d.ts +3 -0
  262. package/dist/esm/utility/authorization/decision/resolve-from-request.utility.d.ts +12 -0
  263. package/dist/esm/utility/authorization/decision/resolve-from-request.utility.js +20 -0
  264. package/dist/esm/utility/authorization/decision/resolve-from-request.utility.js.map +1 -0
  265. package/dist/esm/utility/authorization/index.d.ts +3 -0
  266. package/dist/esm/utility/authorization/scope/index.d.ts +1 -0
  267. package/dist/esm/utility/authorization/scope/merge/index.d.ts +1 -0
  268. package/dist/esm/utility/authorization/scope/merge/where.utility.d.ts +10 -0
  269. package/dist/esm/utility/authorization/scope/merge/where.utility.js +30 -0
  270. package/dist/esm/utility/authorization/scope/merge/where.utility.js.map +1 -0
  271. package/dist/esm/utility/authorization/subject/index.d.ts +1 -0
  272. package/dist/esm/utility/authorization/subject/resolve-default-subject.utility.d.ts +7 -0
  273. package/dist/esm/utility/authorization/subject/resolve-default-subject.utility.js +50 -0
  274. package/dist/esm/utility/authorization/subject/resolve-default-subject.utility.js.map +1 -0
  275. package/dist/esm/utility/index.d.ts +1 -0
  276. package/package.json +1 -1
  277. package/dist/cjs/module/api-subscriber.module.js.map +0 -1
  278. package/dist/esm/module/api-subscriber.module.js.map +0 -1
  279. /package/dist/cjs/module/{api-subscriber.module.d.ts → api/subscriber.module.d.ts} +0 -0
  280. /package/dist/esm/module/{api-subscriber.module.d.ts → api/subscriber.module.d.ts} +0 -0
package/dist/cjs/index.js CHANGED
@@ -7,6 +7,12 @@ var executor_class = require('./class/api/subscriber/executor.class.js');
7
7
  var functionBase_class = require('./class/api/subscriber/function-base.class.js');
8
8
  var registry_class = require('./class/api/subscriber/registry.class.js');
9
9
  var routeBase_class = require('./class/api/subscriber/route-base.class.js');
10
+ var engine_class = require('./class/api/authorization/engine.class.js');
11
+ var guard_class = require('./class/api/authorization/guard.class.js');
12
+ var base_class$1 = require('./class/api/authorization/policy/base.class.js');
13
+ var discoveryService_class$1 = require('./class/api/authorization/policy/discovery-service.class.js');
14
+ var executor_class$1 = require('./class/api/authorization/policy/executor.class.js');
15
+ var registry_class$1 = require('./class/api/authorization/policy/registry.class.js');
10
16
  var metadataStorage_class = require('./class/metadata-storage.class.js');
11
17
  var boolean_class = require('./class/utility/dto/property/factory/boolean.class.js');
12
18
  var date_class = require('./class/utility/dto/property/factory/date.class.js');
@@ -20,6 +26,9 @@ var body_class = require('./class/utility/dto/strategy/body.class.js');
20
26
  var query_class = require('./class/utility/dto/strategy/query.class.js');
21
27
  var request_class = require('./class/utility/dto/strategy/request.class.js');
22
28
  var response_class = require('./class/utility/dto/strategy/response.class.js');
29
+ var decision_constant = require('./constant/authorization/metadata/decision.constant.js');
30
+ var decorator_constant = require('./constant/authorization/policy/decorator.constant.js');
31
+ var registry_constant = require('./constant/authorization/token/registry.constant.js');
23
32
  var date_constant = require('./constant/date.constant.js');
24
33
  var controller_constant = require('./constant/decorator/api/controller.constant.js');
25
34
  var function_constant = require('./constant/decorator/api/function.constant.js');
@@ -36,8 +45,10 @@ var number_constant = require('./constant/number.constant.js');
36
45
  var constant = require('./constant/utility/dto/constant.js');
37
46
  var generate_constant = require('./constant/utility/dto/generate.constant.js');
38
47
  var hasPairedCustomSuffixesFields_constant = require('./constant/validator/has-paired-custom-suffixes-fields.constant.js');
48
+ var policy_decorator = require('./decorator/api/authorization/policy.decorator.js');
39
49
  var decorator = require('./decorator/api/controller/decorator.js');
40
50
  var observable_decorator = require('./decorator/api/controller/observable.decorator.js');
51
+ var securable_decorator = require('./decorator/api/controller/securable.decorator.js');
41
52
  var create_decorator = require('./decorator/api/function/create.decorator.js');
42
53
  var decorator$1 = require('./decorator/api/function/decorator.js');
43
54
  var delete_decorator = require('./decorator/api/function/delete.decorator.js');
@@ -59,13 +70,15 @@ var observable_decorator$1 = require('./decorator/api/service/observable.decorat
59
70
  var service_decorator = require('./decorator/api/service.decorator.js');
60
71
  var function_decorator = require('./decorator/api/subscriber/function.decorator.js');
61
72
  var route_decorator = require('./decorator/api/subscriber/route.decorator.js');
73
+ var effect_enum = require('./enum/authorization/effect.enum.js');
74
+ var onType_enum = require('./enum/authorization/policy/on-type.enum.js');
62
75
  var action_enum = require('./enum/decorator/api/action.enum.js');
63
76
  var authenticationType_enum = require('./enum/decorator/api/authentication-type.enum.js');
64
77
  var loadRelationsStrategy_enum = require('./enum/decorator/api/controller/load-relations-strategy.enum.js');
65
78
  var requestTransformerType_enum = require('./enum/decorator/api/controller/request-transformer-type.enum.js');
66
79
  var dtoType_enum = require('./enum/decorator/api/dto-type.enum.js');
67
80
  var type_enum = require('./enum/decorator/api/function/type.enum.js');
68
- var onType_enum = require('./enum/decorator/api/on-type.enum.js');
81
+ var onType_enum$1 = require('./enum/decorator/api/on-type.enum.js');
69
82
  var dataType_enum = require('./enum/decorator/api/property/data-type.enum.js');
70
83
  var identifier_enum = require('./enum/decorator/api/property/date/identifier.enum.js');
71
84
  var type_enum$1 = require('./enum/decorator/api/property/date/type.enum.js');
@@ -82,7 +95,8 @@ var hasPairedCustomSuffixesFieldsArgumentType_enum = require('./enum/validator/h
82
95
  var mustMatchOneOfSchemasErrorType_enum = require('./enum/validator/must-match-one-of-schemas-error-type.enum.js');
83
96
  var controller_factory = require('./factory/api/controller.factory.js');
84
97
  var correlationIdResponseBody_interceptor = require('./interceptor/correlation-id-response-body.interceptor.js');
85
- var apiSubscriber_module = require('./module/api-subscriber.module.js');
98
+ var authorization_module = require('./module/api/authorization.module.js');
99
+ var subscriber_module = require('./module/api/subscriber.module.js');
86
100
  var applyDecorators_utility = require('./utility/api/controller/apply-decorators.utility.js');
87
101
  var applyMetadata_utility = require('./utility/api/controller/apply-metadata.utility.js');
88
102
  var transformFilter_utility = require('./utility/api/controller/get-list/transform-filter.utility.js');
@@ -96,6 +110,11 @@ var writeDtoSwagger_utility = require('./utility/api/controller/write-dto-swagge
96
110
  var writeMethod_utility = require('./utility/api/controller/write-method.utility.js');
97
111
  var filterOrderByFromEntity_utility = require('./utility/api/filter-order-by-from-entity.utility.js');
98
112
  var getDefaultStringFormatProperties_utility = require('./utility/api/property/get-default-string-format-properties.utility.js');
113
+ var applyResult_utility = require('./utility/authorization/decision/apply-result.utility.js');
114
+ var attachResource_utility = require('./utility/authorization/decision/attach-resource.utility.js');
115
+ var resolveFromRequest_utility = require('./utility/authorization/decision/resolve-from-request.utility.js');
116
+ var where_utility = require('./utility/authorization/scope/merge/where.utility.js');
117
+ var resolveDefaultSubject_utility = require('./utility/authorization/subject/resolve-default-subject.utility.js');
99
118
  var camelCaseString_utility = require('./utility/camel-case-string.utility.js');
100
119
  var capitalizeString_utility = require('./utility/capitalize-string.utility.js');
101
120
  var analize_utility = require('./utility/dto/analize.utility.js');
@@ -142,6 +161,21 @@ exports.ApiSubscriberExecutor = executor_class.ApiSubscriberExecutor;
142
161
  exports.ApiFunctionSubscriberBase = functionBase_class.ApiFunctionSubscriberBase;
143
162
  exports.apiSubscriberRegistry = registry_class.apiSubscriberRegistry;
144
163
  exports.ApiRouteSubscriberBase = routeBase_class.ApiRouteSubscriberBase;
164
+ Object.defineProperty(exports, "ApiAuthorizationEngine", {
165
+ enumerable: true,
166
+ get: function () { return engine_class.ApiAuthorizationEngine; }
167
+ });
168
+ Object.defineProperty(exports, "ApiAuthorizationGuard", {
169
+ enumerable: true,
170
+ get: function () { return guard_class.ApiAuthorizationGuard; }
171
+ });
172
+ exports.ApiAuthorizationPolicyBase = base_class$1.ApiAuthorizationPolicyBase;
173
+ Object.defineProperty(exports, "ApiAuthorizationPolicyDiscoveryService", {
174
+ enumerable: true,
175
+ get: function () { return discoveryService_class$1.ApiAuthorizationPolicyDiscoveryService; }
176
+ });
177
+ exports.ApiAuthorizationPolicyExecutor = executor_class$1.ApiAuthorizationPolicyExecutor;
178
+ exports.ApiAuthorizationPolicyRegistry = registry_class$1.ApiAuthorizationPolicyRegistry;
145
179
  exports.MetadataStorage = metadataStorage_class.MetadataStorage;
146
180
  exports.DtoPropertyFactoryBoolean = boolean_class.DtoPropertyFactoryBoolean;
147
181
  exports.DtoPropertyFactoryDate = date_class.DtoPropertyFactoryDate;
@@ -155,6 +189,9 @@ exports.DtoStrategyBody = body_class.DtoStrategyBody;
155
189
  exports.DtoStrategyQuery = query_class.DtoStrategyQuery;
156
190
  exports.DtoStrategyRequest = request_class.DtoStrategyRequest;
157
191
  exports.DtoStrategyResponse = response_class.DtoStrategyResponse;
192
+ exports.AUTHORIZATION_DECISION_METADATA_CONSTANT = decision_constant.AUTHORIZATION_DECISION_METADATA_CONSTANT;
193
+ exports.AUTHORIZATION_POLICY_DECORATOR_CONSTANT = decorator_constant.AUTHORIZATION_POLICY_DECORATOR_CONSTANT;
194
+ exports.AUTHORIZATION_POLICY_REGISTRY_TOKEN = registry_constant.AUTHORIZATION_POLICY_REGISTRY_TOKEN;
158
195
  exports.DATE_CONSTANT = date_constant.DATE_CONSTANT;
159
196
  exports.CONTROLLER_API_DECORATOR_CONSTANT = controller_constant.CONTROLLER_API_DECORATOR_CONSTANT;
160
197
  exports.FUNCTION_API_DECORATOR_CONSTANT = function_constant.FUNCTION_API_DECORATOR_CONSTANT;
@@ -171,8 +208,10 @@ exports.NUMBER_CONSTANT = number_constant.NUMBER_CONSTANT;
171
208
  exports.DTO_UTILITY_CONSTANT = constant.DTO_UTILITY_CONSTANT;
172
209
  exports.DTO_GENERATE_CONSTANT = generate_constant.DTO_GENERATE_CONSTANT;
173
210
  exports.VALIDATOR_HAS_PAIRED_CUSTOM_SUFFIXES_FIELDS_CONSTANT = hasPairedCustomSuffixesFields_constant.VALIDATOR_HAS_PAIRED_CUSTOM_SUFFIXES_FIELDS_CONSTANT;
211
+ exports.ApiAuthorizationPolicy = policy_decorator.ApiAuthorizationPolicy;
174
212
  exports.ApiController = decorator.ApiController;
175
213
  exports.ApiControllerObservable = observable_decorator.ApiControllerObservable;
214
+ exports.ApiControllerSecurable = securable_decorator.ApiControllerSecurable;
176
215
  exports.ApiFunctionCreate = create_decorator.ApiFunctionCreate;
177
216
  exports.ApiFunction = decorator$1.ApiFunction;
178
217
  exports.ApiFunctionDelete = delete_decorator.ApiFunctionDelete;
@@ -194,6 +233,14 @@ exports.ApiServiceObservable = observable_decorator$1.ApiServiceObservable;
194
233
  exports.ApiService = service_decorator.ApiService;
195
234
  exports.ApiFunctionSubscriber = function_decorator.ApiFunctionSubscriber;
196
235
  exports.ApiRouteSubscriber = route_decorator.ApiRouteSubscriber;
236
+ Object.defineProperty(exports, "EAuthorizationEffect", {
237
+ enumerable: true,
238
+ get: function () { return effect_enum.EAuthorizationEffect; }
239
+ });
240
+ Object.defineProperty(exports, "EApiAuthorizationPolicyOnType", {
241
+ enumerable: true,
242
+ get: function () { return onType_enum.EApiAuthorizationPolicyOnType; }
243
+ });
197
244
  Object.defineProperty(exports, "EApiAction", {
198
245
  enumerable: true,
199
246
  get: function () { return action_enum.EApiAction; }
@@ -220,7 +267,7 @@ Object.defineProperty(exports, "EApiFunctionType", {
220
267
  });
221
268
  Object.defineProperty(exports, "EApiSubscriberOnType", {
222
269
  enumerable: true,
223
- get: function () { return onType_enum.EApiSubscriberOnType; }
270
+ get: function () { return onType_enum$1.EApiSubscriberOnType; }
224
271
  });
225
272
  Object.defineProperty(exports, "EApiPropertyDataType", {
226
273
  enumerable: true,
@@ -319,9 +366,13 @@ Object.defineProperty(exports, "CorrelationIDResponseBodyInterceptor", {
319
366
  enumerable: true,
320
367
  get: function () { return correlationIdResponseBody_interceptor.CorrelationIDResponseBodyInterceptor; }
321
368
  });
369
+ Object.defineProperty(exports, "ApiAuthorizationModule", {
370
+ enumerable: true,
371
+ get: function () { return authorization_module.ApiAuthorizationModule; }
372
+ });
322
373
  Object.defineProperty(exports, "ApiSubscriberModule", {
323
374
  enumerable: true,
324
- get: function () { return apiSubscriber_module.ApiSubscriberModule; }
375
+ get: function () { return subscriber_module.ApiSubscriberModule; }
325
376
  });
326
377
  exports.ApiControllerApplyDecorators = applyDecorators_utility.ApiControllerApplyDecorators;
327
378
  exports.ApiControllerApplyMetadata = applyMetadata_utility.ApiControllerApplyMetadata;
@@ -336,6 +387,11 @@ exports.ApiControllerWriteDtoSwagger = writeDtoSwagger_utility.ApiControllerWrit
336
387
  exports.ApiControllerWriteMethod = writeMethod_utility.ApiControllerWriteMethod;
337
388
  exports.FilterOrderByFromEntity = filterOrderByFromEntity_utility.FilterOrderByFromEntity;
338
389
  exports.GetDefaultStringFormatProperties = getDefaultStringFormatProperties_utility.GetDefaultStringFormatProperties;
390
+ exports.AuthorizationDecisionApplyResult = applyResult_utility.AuthorizationDecisionApplyResult;
391
+ exports.AuthorizationDecisionAttachResource = attachResource_utility.AuthorizationDecisionAttachResource;
392
+ exports.AuthorizationDecisionResolveFromRequest = resolveFromRequest_utility.AuthorizationDecisionResolveFromRequest;
393
+ exports.AuthorizationScopeMergeWhere = where_utility.AuthorizationScopeMergeWhere;
394
+ exports.AuthorizationResolveDefaultSubject = resolveDefaultSubject_utility.AuthorizationResolveDefaultSubject;
339
395
  exports.CamelCaseString = camelCaseString_utility.CamelCaseString;
340
396
  exports.CapitalizeString = capitalizeString_utility.CapitalizeString;
341
397
  exports.analyzeEntityMetadata = analize_utility.analyzeEntityMetadata;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,7 @@
1
1
  import type { IApiBaseEntity } from './api-base-entity.interface';
2
+ import type { IApiAuthorizationDecision } from './authorization/index';
3
+ import type { TApiAuthorizationRuleTransformPayload } from '../type/class/api/authorization/rule/transform-payload.type';
2
4
  export interface IApiAuthenticationRequest {
5
+ authorizationDecision?: IApiAuthorizationDecision<IApiBaseEntity, TApiAuthorizationRuleTransformPayload<IApiBaseEntity>>;
3
6
  user: IApiBaseEntity;
4
7
  }
@@ -0,0 +1,17 @@
1
+ import type { EAuthorizationEffect } from '../../enum/authorization/effect.enum';
2
+ import type { IApiBaseEntity } from '../api-base-entity.interface';
3
+ import type { IApiAuthorizationRule } from './rule/interface';
4
+ import type { IApiAuthorizationScope } from './scope.interface';
5
+ import type { IApiAuthorizationSubject } from './subject.interface';
6
+ import type { TApiAuthorizationRuleResultTransform } from '../../type/class/api/authorization/rule/result-transform.type';
7
+ export interface IApiAuthorizationDecision<E extends IApiBaseEntity, R> {
8
+ action: string;
9
+ appliedRules: Array<IApiAuthorizationRule<E, R>>;
10
+ effect: EAuthorizationEffect;
11
+ policyId: string;
12
+ resource?: E;
13
+ resourceType: string;
14
+ scope?: IApiAuthorizationScope<E>;
15
+ subject: IApiAuthorizationSubject;
16
+ transforms: Array<TApiAuthorizationRuleResultTransform<E, R>>;
17
+ }
@@ -0,0 +1,6 @@
1
+ import type { IApiBaseEntity } from '../api-base-entity.interface';
2
+ import type { IApiAuthorizationDecision } from './decision.interface';
3
+ import type { IApiAuthorizationEngineEvaluateOptions } from './evaluate-options.interface';
4
+ export interface IApiAuthorizationEngine<E extends IApiBaseEntity> {
5
+ evaluate<R>(options: IApiAuthorizationEngineEvaluateOptions<E, R>): Promise<IApiAuthorizationDecision<E, R>>;
6
+ }
@@ -0,0 +1,9 @@
1
+ import type { IApiBaseEntity } from '../api-base-entity.interface';
2
+ import type { IApiAuthorizationPolicy } from './policy/interface';
3
+ import type { IApiAuthorizationSubject } from './subject.interface';
4
+ export interface IApiAuthorizationEngineEvaluateOptions<E extends IApiBaseEntity, R> {
5
+ action: string;
6
+ policy: IApiAuthorizationPolicy<E, R>;
7
+ resource?: E;
8
+ subject: IApiAuthorizationSubject;
9
+ }
@@ -0,0 +1,7 @@
1
+ export { type IApiAuthorizationDecision } from './decision.interface';
2
+ export { type IApiAuthorizationEngine } from './engine.interface';
3
+ export { type IApiAuthorizationEngineEvaluateOptions } from './evaluate-options.interface';
4
+ export type * from './policy/index';
5
+ export type * from './rule/index';
6
+ export { type IApiAuthorizationScope } from './scope.interface';
7
+ export { type IApiAuthorizationSubject } from './subject.interface';
@@ -0,0 +1,3 @@
1
+ export { type IApiAuthorizationPolicy } from './interface';
2
+ export { type IApiAuthorizationPolicyRegistry } from './registry.interface';
3
+ export type * from './subscriber/index';
@@ -0,0 +1,9 @@
1
+ import type { IApiBaseEntity } from '../../api-base-entity.interface';
2
+ import type { IApiAuthorizationRule } from '../rule/interface';
3
+ export interface IApiAuthorizationPolicy<E extends IApiBaseEntity, R> {
4
+ action: string;
5
+ description?: string;
6
+ entity: new () => E;
7
+ policyId: string;
8
+ rules: Array<IApiAuthorizationRule<E, R>>;
9
+ }
@@ -0,0 +1,10 @@
1
+ import type { IApiBaseEntity } from '../../api-base-entity.interface';
2
+ import type { IApiAuthorizationPolicy } from './interface';
3
+ import type { IApiAuthorizationPolicySubscriberRegistration } from './subscriber/registration.interface';
4
+ import type { TApiAuthorizationPolicyHookResult } from '../../../type/class/api/authorization/policy/hook/index';
5
+ export interface IApiAuthorizationPolicyRegistry {
6
+ buildAggregatedPolicy<E extends IApiBaseEntity, TAction extends string>(entity: new () => E, action: TAction): Promise<IApiAuthorizationPolicy<E, TApiAuthorizationPolicyHookResult<TAction, E>> | undefined>;
7
+ clear(): void;
8
+ registerPolicy<E extends IApiBaseEntity, R>(policy: IApiAuthorizationPolicy<E, R>): void;
9
+ registerSubscriber<E extends IApiBaseEntity>(registration: IApiAuthorizationPolicySubscriberRegistration<E>): void;
10
+ }
@@ -0,0 +1,9 @@
1
+ import type { EApiRouteType } from '../../../../enum/decorator/api/route-type.enum';
2
+ import type { IApiBaseEntity } from '../../../api-base-entity.interface';
3
+ import type { IApiEntity } from '../../../entity/interface';
4
+ export interface IApiAuthorizationPolicySubscriberContext<E extends IApiBaseEntity> {
5
+ action: string;
6
+ entity: new () => E;
7
+ entityMetadata: IApiEntity<E>;
8
+ routeType?: EApiRouteType;
9
+ }
@@ -0,0 +1,5 @@
1
+ export { type IApiAuthorizationPolicySubscriberContext } from './context.interface';
2
+ export { type IApiAuthorizationPolicySubscriber } from './interface';
3
+ export { type IApiAuthorizationPolicySubscriberProperties } from './properties.interface';
4
+ export { type IApiAuthorizationPolicySubscriberRegistration } from './registration.interface';
5
+ export { type IApiAuthorizationPolicySubscriberRule } from './rule.interface';
@@ -0,0 +1,14 @@
1
+ import type { EApiRouteType } from '../../../../enum/decorator/api/route-type.enum';
2
+ import type { IApiBaseEntity } from '../../../api-base-entity.interface';
3
+ import type { IApiAuthorizationPolicySubscriberContext } from './context.interface';
4
+ import type { TApiAuthorizationPolicyHookResult } from '../../../../type/class/api/authorization/policy/hook/index';
5
+ import type { TApiAuthorizationPolicySubscriberRuleResult } from '../../../../type/class/api/authorization/policy/policy-subscriber-rule-result.type';
6
+ export interface IApiAuthorizationPolicySubscriber<E extends IApiBaseEntity> {
7
+ getCustomActionRule?<TAction extends string>(action: TAction, context: IApiAuthorizationPolicySubscriberContext<E>): Promise<TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<TAction, E>>> | TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<TAction, E>>;
8
+ onBeforeCreate?(context: IApiAuthorizationPolicySubscriberContext<E>): Promise<TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.CREATE, E>>> | TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.CREATE, E>>;
9
+ onBeforeDelete?(context: IApiAuthorizationPolicySubscriberContext<E>): Promise<TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.DELETE, E>>> | TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.DELETE, E>>;
10
+ onBeforeGet?(context: IApiAuthorizationPolicySubscriberContext<E>): Promise<TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.GET, E>>> | TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.GET, E>>;
11
+ onBeforeGetList?(context: IApiAuthorizationPolicySubscriberContext<E>): Promise<TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.GET_LIST, E>>> | TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.GET_LIST, E>>;
12
+ onBeforePartialUpdate?(context: IApiAuthorizationPolicySubscriberContext<E>): Promise<TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.PARTIAL_UPDATE, E>>> | TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.PARTIAL_UPDATE, E>>;
13
+ onBeforeUpdate?(context: IApiAuthorizationPolicySubscriberContext<E>): Promise<TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.UPDATE, E>>> | TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<EApiRouteType.UPDATE, E>>;
14
+ }
@@ -0,0 +1,7 @@
1
+ import type { IApiBaseEntity } from '../../../api-base-entity.interface';
2
+ export interface IApiAuthorizationPolicySubscriberProperties<E extends IApiBaseEntity> {
3
+ description?: string;
4
+ entity: new () => E;
5
+ policyId?: string;
6
+ priority?: number;
7
+ }
@@ -0,0 +1,9 @@
1
+ import type { IApiBaseEntity } from '../../../api-base-entity.interface';
2
+ import type { IApiAuthorizationPolicySubscriber } from './interface';
3
+ export interface IApiAuthorizationPolicySubscriberRegistration<E extends IApiBaseEntity> {
4
+ description?: string;
5
+ entity: new () => E;
6
+ policyId: string;
7
+ priority: number;
8
+ subscriber: IApiAuthorizationPolicySubscriber<E>;
9
+ }
@@ -0,0 +1,13 @@
1
+ import type { EAuthorizationEffect } from '../../../../enum/authorization/effect.enum';
2
+ import type { IApiBaseEntity } from '../../../api-base-entity.interface';
3
+ import type { TApiAuthorizationRuleCondition } from '../../../../type/class/api/authorization/rule/condition.type';
4
+ import type { TApiAuthorizationRuleResultTransform } from '../../../../type/class/api/authorization/rule/result-transform.type';
5
+ import type { TApiAuthorizationRuleScopeResolver } from '../../../../type/class/api/authorization/rule/scope-resolver.type';
6
+ export interface IApiAuthorizationPolicySubscriberRule<E extends IApiBaseEntity, R> {
7
+ condition?: TApiAuthorizationRuleCondition<E>;
8
+ description?: string;
9
+ effect: EAuthorizationEffect;
10
+ priority?: number;
11
+ resultTransform?: TApiAuthorizationRuleResultTransform<E, R>;
12
+ scope?: TApiAuthorizationRuleScopeResolver<E>;
13
+ }
@@ -0,0 +1,6 @@
1
+ import type { IApiBaseEntity } from '../../api-base-entity.interface';
2
+ import type { IApiAuthorizationSubject } from '../subject.interface';
3
+ export interface IApiAuthorizationRuleContext<E extends IApiBaseEntity> {
4
+ resource?: E;
5
+ subject: IApiAuthorizationSubject;
6
+ }
@@ -0,0 +1,2 @@
1
+ export { type IApiAuthorizationRuleContext } from './context.interface';
2
+ export { type IApiAuthorizationRule } from './interface';
@@ -0,0 +1,15 @@
1
+ import type { EAuthorizationEffect } from '../../../enum/authorization/effect.enum';
2
+ import type { IApiBaseEntity } from '../../api-base-entity.interface';
3
+ import type { TApiAuthorizationRuleCondition } from '../../../type/class/api/authorization/rule/condition.type';
4
+ import type { TApiAuthorizationRuleResultTransform } from '../../../type/class/api/authorization/rule/result-transform.type';
5
+ import type { TApiAuthorizationRuleScopeResolver } from '../../../type/class/api/authorization/rule/scope-resolver.type';
6
+ export interface IApiAuthorizationRule<E extends IApiBaseEntity, R> {
7
+ action: string;
8
+ condition?: TApiAuthorizationRuleCondition<E>;
9
+ description?: string;
10
+ effect: EAuthorizationEffect;
11
+ policyId: string;
12
+ priority: number;
13
+ resultTransform?: TApiAuthorizationRuleResultTransform<E, R>;
14
+ scope?: TApiAuthorizationRuleScopeResolver<E>;
15
+ }
@@ -0,0 +1,5 @@
1
+ import type { IApiBaseEntity } from '../api-base-entity.interface';
2
+ import type { FindOptionsWhere } from "typeorm";
3
+ export interface IApiAuthorizationScope<E extends IApiBaseEntity> {
4
+ where?: Array<FindOptionsWhere<E>> | FindOptionsWhere<E>;
5
+ }
@@ -0,0 +1,6 @@
1
+ export interface IApiAuthorizationSubject {
2
+ attributes?: Record<string, unknown>;
3
+ id: string;
4
+ permissions: Array<string>;
5
+ roles: Array<string>;
6
+ }
@@ -1,8 +1,10 @@
1
1
  import type { EApiRouteType } from '../../../../enum/decorator/api/route-type.enum';
2
2
  import type { IApiAuthenticationRequest } from '../../../api-authentication-request.interface';
3
3
  import type { IApiBaseEntity } from '../../../api-base-entity.interface';
4
+ import type { IApiAuthorizationDecision } from '../../../authorization/index';
4
5
  import type { IApiControllerProperties } from '../../../decorator/api/controller/properties.interface';
5
6
  import type { IApiEntity } from '../../../entity/index';
7
+ import type { TApiAuthorizationRuleTransformPayload } from '../../../../type/class/api/authorization/rule/transform-payload.type';
6
8
  /**
7
9
  * Base data container for route subscriber execution context.
8
10
  * Contains route metadata and configuration.
@@ -46,11 +48,15 @@ export interface IApiSubscriberRouteExecutionContextData<E extends IApiBaseEntit
46
48
  * Extended data container for route subscriber execution context.
47
49
  * Includes request context (headers, IP, authentication) in addition to base route data.
48
50
  */
49
- export interface IApiSubscriberRouteExecutionContextDataExtended<E extends IApiBaseEntity> extends IApiSubscriberRouteExecutionContextData<E> {
51
+ export interface IApiSubscriberRouteExecutionContextDataExtended<E extends IApiBaseEntity, R = TApiAuthorizationRuleTransformPayload<E>> extends IApiSubscriberRouteExecutionContextData<E> {
50
52
  /**
51
53
  * Authentication request information
52
54
  */
53
55
  authenticationRequest?: IApiAuthenticationRequest;
56
+ /**
57
+ * Authorization decision
58
+ */
59
+ authorizationDecision?: IApiAuthorizationDecision<E, R>;
54
60
  /**
55
61
  * HTTP request headers
56
62
  */
@@ -2,6 +2,7 @@ export { type IApiAuthenticationRequest } from './api-authentication-request.int
2
2
  export { type IApiBaseEntity } from './api-base-entity.interface';
3
3
  export { type IApiDtoValidator } from './api-dto-validator.interface';
4
4
  export { type IApiRequestValidator } from './api-request-validator.interface';
5
+ export type * from './authorization/index';
5
6
  export type * from './class/index';
6
7
  export type * from './decorator/api/index';
7
8
  export { type IDtoGenerateFactory } from './dto-generate-factory.interface';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Module responsible for discovering and registering authorization policies.
3
+ * Import this module to enable zero-configuration RBAC.
4
+ * @see {@link https://elsikora.com/docs/nestjs-crud-automator/authorization | Authorization}
5
+ */
6
+ export declare class ApiAuthorizationModule {
7
+ }
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('../../external/tslib/tslib.es6.js');
4
+ var engine_class = require('../../class/api/authorization/engine.class.js');
5
+ var guard_class = require('../../class/api/authorization/guard.class.js');
6
+ var discoveryService_class = require('../../class/api/authorization/policy/discovery-service.class.js');
7
+ var registry_class = require('../../class/api/authorization/policy/registry.class.js');
8
+ var registry_constant = require('../../constant/authorization/token/registry.constant.js');
9
+ var common = require('@nestjs/common');
10
+ var core = require('@nestjs/core');
11
+
12
+ /**
13
+ * Module responsible for discovering and registering authorization policies.
14
+ * Import this module to enable zero-configuration RBAC.
15
+ * @see {@link https://elsikora.com/docs/nestjs-crud-automator/authorization | Authorization}
16
+ */
17
+ exports.ApiAuthorizationModule = class ApiAuthorizationModule {
18
+ };
19
+ exports.ApiAuthorizationModule = tslib_es6.__decorate([
20
+ common.Global(),
21
+ common.Module({
22
+ exports: [registry_constant.AUTHORIZATION_POLICY_REGISTRY_TOKEN, engine_class.ApiAuthorizationEngine, guard_class.ApiAuthorizationGuard, discoveryService_class.ApiAuthorizationPolicyDiscoveryService],
23
+ imports: [core.DiscoveryModule],
24
+ providers: [
25
+ engine_class.ApiAuthorizationEngine,
26
+ guard_class.ApiAuthorizationGuard,
27
+ discoveryService_class.ApiAuthorizationPolicyDiscoveryService,
28
+ {
29
+ provide: registry_constant.AUTHORIZATION_POLICY_REGISTRY_TOKEN,
30
+ useValue: registry_class.apiAuthorizationPolicyRegistry,
31
+ },
32
+ {
33
+ provide: registry_class.ApiAuthorizationPolicyRegistry,
34
+ useValue: registry_class.apiAuthorizationPolicyRegistry,
35
+ },
36
+ ],
37
+ })
38
+ ], exports.ApiAuthorizationModule);
39
+ //# sourceMappingURL=authorization.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorization.module.js","sources":["../../../../../src/module/api/authorization.module.ts"],"sourcesContent":[null],"names":["ApiAuthorizationModule","__decorate","Global","Module","AUTHORIZATION_POLICY_REGISTRY_TOKEN","ApiAuthorizationEngine","ApiAuthorizationGuard","ApiAuthorizationPolicyDiscoveryService","DiscoveryModule","apiAuthorizationPolicyRegistry","ApiAuthorizationPolicyRegistry"],"mappings":";;;;;;;;;;;AAQA;;;;AAIG;AAmBUA,8BAAsB,GAA5B,MAAM,sBAAsB,CAAA;;AAAtBA,8BAAsB,GAAAC,oBAAA,CAAA;AAlBlC,IAAAC,aAAM,EAAE;AACR,IAAAC,aAAM,CAAC;QACP,OAAO,EAAE,CAACC,qDAAmC,EAAEC,mCAAsB,EAAEC,iCAAqB,EAAEC,6DAAsC,CAAC;QACrI,OAAO,EAAE,CAACC,oBAAe,CAAC;AAC1B,QAAA,SAAS,EAAE;YACVH,mCAAsB;YACtBC,iCAAqB;YACrBC,6DAAsC;AACtC,YAAA;AACC,gBAAA,OAAO,EAAEH,qDAAmC;AAC5C,gBAAA,QAAQ,EAAEK,6CAA8B;AACxC,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAEC,6CAA8B;AACvC,gBAAA,QAAQ,EAAED,6CAA8B;AACxC,aAAA;AACD,SAAA;KACD;AACY,CAAA,EAAAT,8BAAsB,CAAG;;"}
@@ -0,0 +1,2 @@
1
+ export { ApiAuthorizationModule } from './authorization.module';
2
+ export { ApiSubscriberModule } from './subscriber.module';
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var tslib_es6 = require('../external/tslib/tslib.es6.js');
4
- var discoveryService_class = require('../class/api/subscriber/discovery-service.class.js');
3
+ var tslib_es6 = require('../../external/tslib/tslib.es6.js');
4
+ var discoveryService_class = require('../../class/api/subscriber/discovery-service.class.js');
5
5
  var common = require('@nestjs/common');
6
6
  var core = require('@nestjs/core');
7
7
 
@@ -20,4 +20,4 @@ exports.ApiSubscriberModule = tslib_es6.__decorate([
20
20
  providers: [discoveryService_class.ApiSubscriberDiscoveryService],
21
21
  })
22
22
  ], exports.ApiSubscriberModule);
23
- //# sourceMappingURL=api-subscriber.module.js.map
23
+ //# sourceMappingURL=subscriber.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscriber.module.js","sources":["../../../../../src/module/api/subscriber.module.ts"],"sourcesContent":[null],"names":["ApiSubscriberModule","__decorate","Module","ApiSubscriberDiscoveryService","DiscoveryModule"],"mappings":";;;;;;;AAIA;;;;;AAKG;AAMUA,2BAAmB,GAAzB,MAAM,mBAAmB,CAAA;;AAAnBA,2BAAmB,GAAAC,oBAAA,CAAA;AAL/B,IAAAC,aAAM,CAAC;QACP,OAAO,EAAE,CAACC,oDAA6B,CAAC;QACxC,OAAO,EAAE,CAACC,oBAAe,CAAC;QAC1B,SAAS,EAAE,CAACD,oDAA6B,CAAC;KAC1C;AACY,CAAA,EAAAH,2BAAmB,CAAG;;"}
@@ -1 +1 @@
1
- export * from './api-subscriber.module';
1
+ export * from './api/index';
@@ -0,0 +1,7 @@
1
+ import type { IApiBaseEntity } from '../../../../interface/api-base-entity.interface';
2
+ import type { IApiAuthorizationDecision } from '../../../../interface/authorization/index';
3
+ import type { TApiAuthorizationRuleTransformPayload } from './rule/transform-payload.type';
4
+ export type TApiAuthorizationGuardRequest = {
5
+ authorizationDecision?: IApiAuthorizationDecision<IApiBaseEntity, TApiAuthorizationRuleTransformPayload<IApiBaseEntity>>;
6
+ user?: unknown;
7
+ } & Record<string, unknown>;
@@ -0,0 +1,4 @@
1
+ export { type TApiAuthorizationGuardRequest } from './guard-request.type';
2
+ export type * from './policy/index';
3
+ export type * from './rule/index';
4
+ export { type TApiAuthorizationScopeWhere } from './scope-where.type';
@@ -0,0 +1,2 @@
1
+ export { type TApiAuthorizationPolicyHookResult } from './result.type';
2
+ export { type TApiAuthorizationPolicyHook } from './type';
@@ -0,0 +1,8 @@
1
+ import type { EApiRouteType } from '../../../../../../enum/decorator/api/route-type.enum';
2
+ import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
3
+ import type { IApiGetListResponseResult } from '../../../../../../interface/decorator/api/get-list-response-result.interface';
4
+ import type { TApiAuthorizationRuleTransformPayload } from '../../rule/transform-payload.type';
5
+ /**
6
+ * Maps a policy hook/action to the payload type its transforms will receive.
7
+ */
8
+ export type TApiAuthorizationPolicyHookResult<TAction extends string, E extends IApiBaseEntity> = TAction extends EApiRouteType.CREATE ? E : TAction extends EApiRouteType.GET ? E : TAction extends EApiRouteType.GET_LIST ? IApiGetListResponseResult<E> : TAction extends EApiRouteType.PARTIAL_UPDATE ? E : TAction extends EApiRouteType.UPDATE ? E : TAction extends EApiRouteType.DELETE ? undefined : TApiAuthorizationRuleTransformPayload<E>;
@@ -0,0 +1,5 @@
1
+ import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
2
+ import type { IApiAuthorizationPolicySubscriberContext } from '../../../../../../interface/authorization/index';
3
+ import type { TApiAuthorizationPolicySubscriberRuleResult } from '../policy-subscriber-rule-result.type';
4
+ import type { TApiAuthorizationPolicyHookResult } from './result.type';
5
+ export type TApiAuthorizationPolicyHook<E extends IApiBaseEntity, TAction extends string> = (context: IApiAuthorizationPolicySubscriberContext<E>) => Promise<TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<TAction, E>>> | TApiAuthorizationPolicySubscriberRuleResult<E, TApiAuthorizationPolicyHookResult<TAction, E>>;
@@ -0,0 +1,2 @@
1
+ export type * from './hook/index';
2
+ export { type TApiAuthorizationPolicySubscriberRuleResult } from './policy-subscriber-rule-result.type';
@@ -0,0 +1,3 @@
1
+ import type { IApiBaseEntity } from '../../../../../interface/api-base-entity.interface';
2
+ import type { IApiAuthorizationPolicySubscriberRule } from '../../../../../interface/authorization/policy/subscriber/rule.interface';
3
+ export type TApiAuthorizationPolicySubscriberRuleResult<E extends IApiBaseEntity, R> = Array<IApiAuthorizationPolicySubscriberRule<E, R>> | IApiAuthorizationPolicySubscriberRule<E, R> | undefined;
@@ -0,0 +1,3 @@
1
+ import type { IApiBaseEntity } from '../../../../../interface/api-base-entity.interface';
2
+ import type { IApiAuthorizationRuleContext } from '../../../../../interface/authorization/rule/context.interface';
3
+ export type TApiAuthorizationRuleCondition<E extends IApiBaseEntity> = (context: IApiAuthorizationRuleContext<E>) => boolean | Promise<boolean>;
@@ -0,0 +1,4 @@
1
+ export { type TApiAuthorizationRuleCondition } from './condition.type';
2
+ export { type TApiAuthorizationRuleResultTransform } from './result-transform.type';
3
+ export { type TApiAuthorizationRuleScopeResolver } from './scope-resolver.type';
4
+ export { type TApiAuthorizationRuleTransformPayload } from './transform-payload.type';
@@ -0,0 +1,4 @@
1
+ import type { IApiBaseEntity } from '../../../../../interface/api-base-entity.interface';
2
+ import type { IApiAuthorizationRuleContext } from '../../../../../interface/authorization/rule/context.interface';
3
+ import type { TApiAuthorizationRuleTransformPayload } from './transform-payload.type';
4
+ export type TApiAuthorizationRuleResultTransform<E extends IApiBaseEntity, R = TApiAuthorizationRuleTransformPayload<E>> = (result: R, context: IApiAuthorizationRuleContext<E>) => Promise<R> | R;
@@ -0,0 +1,4 @@
1
+ import type { IApiBaseEntity } from '../../../../../interface/api-base-entity.interface';
2
+ import type { IApiAuthorizationRuleContext } from '../../../../../interface/authorization/rule/context.interface';
3
+ import type { IApiAuthorizationScope } from '../../../../../interface/authorization/scope.interface';
4
+ export type TApiAuthorizationRuleScopeResolver<E extends IApiBaseEntity> = (context: IApiAuthorizationRuleContext<E>) => IApiAuthorizationScope<E> | Promise<IApiAuthorizationScope<E> | undefined> | undefined;
@@ -0,0 +1,3 @@
1
+ import type { IApiBaseEntity } from '../../../../../interface/api-base-entity.interface';
2
+ import type { IApiGetListResponseResult } from '../../../../../interface/decorator/api/get-list-response-result.interface';
3
+ export type TApiAuthorizationRuleTransformPayload<E extends IApiBaseEntity> = Array<unknown> | boolean | E | IApiGetListResponseResult<E> | null | number | object | Partial<E> | Record<string, unknown> | string | undefined;
@@ -0,0 +1,3 @@
1
+ import type { IApiBaseEntity } from '../../../../interface/api-base-entity.interface';
2
+ import type { FindOptionsWhere } from "typeorm";
3
+ export type TApiAuthorizationScopeWhere<E extends IApiBaseEntity> = Array<FindOptionsWhere<E>> | FindOptionsWhere<E> | undefined;
@@ -1,4 +1,4 @@
1
1
  import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
2
2
  import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
3
3
  import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
4
- export type TApiSubscriberRouteAfterCreateContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E>>;
4
+ export type TApiSubscriberRouteAfterCreateContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E, E>>;
@@ -1,4 +1,4 @@
1
1
  import type { IApiBaseEntity } from '../../../../../../interface/api-base-entity.interface';
2
2
  import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
3
3
  import type { IApiSubscriberRouteExecutionContext } from '../../../../../../interface/class/api/subscriber/route-execution-context.interface';
4
- export type TApiSubscriberRouteAfterDeleteContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E>>;
4
+ export type TApiSubscriberRouteAfterDeleteContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E, E>>;
@@ -1,4 +1,4 @@
1
1
  import type { IApiBaseEntity } from '../../../../../../../interface/api-base-entity.interface';
2
2
  import type { IApiSubscriberRouteExecutionContextDataExtended } from '../../../../../../../interface/class/api/subscriber/route-execution-context-data.interface';
3
3
  import type { IApiSubscriberRouteExecutionContext } from '../../../../../../../interface/class/api/subscriber/route-execution-context.interface';
4
- export type TApiSubscriberRouteAfterGetContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E>>;
4
+ export type TApiSubscriberRouteAfterGetContext<E extends IApiBaseEntity> = IApiSubscriberRouteExecutionContext<E, E, IApiSubscriberRouteExecutionContextDataExtended<E, E>>;