@herrromich/az-functions 1.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 (439) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +830 -0
  3. package/coverage/cobertura-coverage.xml +3482 -0
  4. package/coverage/lcov-report/base.css +224 -0
  5. package/coverage/lcov-report/block-navigation.js +87 -0
  6. package/coverage/lcov-report/context/forked-invocation-context.ts.html +127 -0
  7. package/coverage/lcov-report/context/index.html +191 -0
  8. package/coverage/lcov-report/context/index.ts.html +97 -0
  9. package/coverage/lcov-report/context/platform-context.manager.ts.html +193 -0
  10. package/coverage/lcov-report/context/platform-context.model.ts.html +262 -0
  11. package/coverage/lcov-report/context/platform-context.provider.ts.html +196 -0
  12. package/coverage/lcov-report/context/platform.execution.context.ts.html +217 -0
  13. package/coverage/lcov-report/context/wrapped-invocation-context.ts.html +163 -0
  14. package/coverage/lcov-report/event-hub-handler/azure-event-hub-trigger.model.ts.html +187 -0
  15. package/coverage/lcov-report/event-hub-handler/azure-event-hub-trigger.service.ts.html +760 -0
  16. package/coverage/lcov-report/event-hub-handler/decorators/decorators.model.ts.html +292 -0
  17. package/coverage/lcov-report/event-hub-handler/decorators/decorators.ts.html +778 -0
  18. package/coverage/lcov-report/event-hub-handler/decorators/index.html +146 -0
  19. package/coverage/lcov-report/event-hub-handler/decorators/index.ts.html +91 -0
  20. package/coverage/lcov-report/event-hub-handler/event-hub-handle-method-args-metadata.service.ts.html +130 -0
  21. package/coverage/lcov-report/event-hub-handler/event-hub-handler-metadata.reader.ts.html +199 -0
  22. package/coverage/lcov-report/event-hub-handler/event-hub-handler-registration.service.ts.html +220 -0
  23. package/coverage/lcov-report/event-hub-handler/event-hub-handler.factory.ts.html +283 -0
  24. package/coverage/lcov-report/event-hub-handler/event-hub-handler.model.ts.html +421 -0
  25. package/coverage/lcov-report/event-hub-handler/event-hub-handler.provider.ts.html +187 -0
  26. package/coverage/lcov-report/event-hub-handler/event-hub-trigger-support.factory.ts.html +787 -0
  27. package/coverage/lcov-report/event-hub-handler/event-hub-trigger-support.service.ts.html +829 -0
  28. package/coverage/lcov-report/event-hub-handler/event-hub-trigger.model.ts.html +193 -0
  29. package/coverage/lcov-report/event-hub-handler/event-hub-trigger.service.ts.html +859 -0
  30. package/coverage/lcov-report/event-hub-handler/event-hub-triggers-registration.service.ts.html +307 -0
  31. package/coverage/lcov-report/event-hub-handler/index.html +221 -0
  32. package/coverage/lcov-report/event-hub-handler/index.ts.html +142 -0
  33. package/coverage/lcov-report/eventhub-handler/decorators/decorators.model.ts.html +277 -0
  34. package/coverage/lcov-report/eventhub-handler/decorators/decorators.ts.html +679 -0
  35. package/coverage/lcov-report/eventhub-handler/decorators/index.html +131 -0
  36. package/coverage/lcov-report/eventhub-handler/eventhub-handler-metadata.reader.ts.html +196 -0
  37. package/coverage/lcov-report/eventhub-handler/eventhub-handler-registration.service.ts.html +220 -0
  38. package/coverage/lcov-report/eventhub-handler/eventhub-handler.factory.ts.html +193 -0
  39. package/coverage/lcov-report/eventhub-handler/eventhub-handler.model.ts.html +406 -0
  40. package/coverage/lcov-report/eventhub-handler/eventhub-trigger.model.ts.html +187 -0
  41. package/coverage/lcov-report/eventhub-handler/eventhub-trigger.service.ts.html +760 -0
  42. package/coverage/lcov-report/eventhub-handler/eventhub-triggers-registration.service.ts.html +304 -0
  43. package/coverage/lcov-report/eventhub-handler/index.html +206 -0
  44. package/coverage/lcov-report/favicon.png +0 -0
  45. package/coverage/lcov-report/forked-invocation-context.ts.html +127 -0
  46. package/coverage/lcov-report/function-handler-metadata.reader.ts.html +172 -0
  47. package/coverage/lcov-report/http-controller/authentication.provider.ts.html +481 -0
  48. package/coverage/lcov-report/http-controller/authenticator.provider.ts.html +460 -0
  49. package/coverage/lcov-report/http-controller/azure-http-trigger.service.ts.html +1045 -0
  50. package/coverage/lcov-report/http-controller/decorators/decorators.model.ts.html +388 -0
  51. package/coverage/lcov-report/http-controller/decorators/decorators.ts.html +1627 -0
  52. package/coverage/lcov-report/http-controller/decorators/index.html +146 -0
  53. package/coverage/lcov-report/http-controller/decorators/index.ts.html +94 -0
  54. package/coverage/lcov-report/http-controller/http-controller-metadata.reader.ts.html +271 -0
  55. package/coverage/lcov-report/http-controller/http-controller-metadata.service.ts.html +130 -0
  56. package/coverage/lcov-report/http-controller/http-controller-platform.model.ts.html +187 -0
  57. package/coverage/lcov-report/http-controller/http-controller-registration.service.ts.html +241 -0
  58. package/coverage/lcov-report/http-controller/http-controller.model.ts.html +745 -0
  59. package/coverage/lcov-report/http-controller/http-handler-support.factory.ts.html +499 -0
  60. package/coverage/lcov-report/http-controller/http-handler.factory.ts.html +415 -0
  61. package/coverage/lcov-report/http-controller/http-operation-registration.service.ts.html +328 -0
  62. package/coverage/lcov-report/http-controller/http-operations-registration.service.ts.html +328 -0
  63. package/coverage/lcov-report/http-controller/http-request-arg-provider.factory.ts.html +580 -0
  64. package/coverage/lcov-report/http-controller/http-request-handler.provider.ts.html +388 -0
  65. package/coverage/lcov-report/http-controller/http-response-processor.factory.ts.html +316 -0
  66. package/coverage/lcov-report/http-controller/index.html +311 -0
  67. package/coverage/lcov-report/http-controller/index.ts.html +226 -0
  68. package/coverage/lcov-report/http-controller/open-api-definition.service.ts.html +568 -0
  69. package/coverage/lcov-report/http-controller/open-api-metadata.service.ts.html +373 -0
  70. package/coverage/lcov-report/http-controller/open-api-print.service.ts.html +232 -0
  71. package/coverage/lcov-report/http-controller/open-api-registration.service.ts.html +220 -0
  72. package/coverage/lcov-report/http-controller/rest-open-api.regstry.ts.html +262 -0
  73. package/coverage/lcov-report/http-controller/security/authentication-service.factory.ts.html +280 -0
  74. package/coverage/lcov-report/http-controller/security/authentication-service.ts.html +115 -0
  75. package/coverage/lcov-report/http-controller/security/authenticator.provider.ts.html +799 -0
  76. package/coverage/lcov-report/http-controller/security/bearer-security-authentication.service.ts.html +133 -0
  77. package/coverage/lcov-report/http-controller/security/index.html +206 -0
  78. package/coverage/lcov-report/http-controller/security/index.ts.html +94 -0
  79. package/coverage/lcov-report/http-controller/security/model.ts.html +133 -0
  80. package/coverage/lcov-report/http-controller/security/operation-authentication.resolver.ts.html +418 -0
  81. package/coverage/lcov-report/http-controller/security/principal-merge.service.ts.html +163 -0
  82. package/coverage/lcov-report/http-controller/security/strict-principal-merge.servce.ts.html +154 -0
  83. package/coverage/lcov-report/http-controller/swagger-handling.service.ts.html +463 -0
  84. package/coverage/lcov-report/index.html +281 -0
  85. package/coverage/lcov-report/init.ts.html +97 -0
  86. package/coverage/lcov-report/ioc-container.utils.ts.html +100 -0
  87. package/coverage/lcov-report/logger/azure-log-transport.service.ts.html +433 -0
  88. package/coverage/lcov-report/logger/bindings.ts.html +253 -0
  89. package/coverage/lcov-report/logger/index.html +221 -0
  90. package/coverage/lcov-report/logger/index.ts.html +163 -0
  91. package/coverage/lcov-report/logger/log-level.service.ts.html +127 -0
  92. package/coverage/lcov-report/logger/log-transport.service.ts.html +571 -0
  93. package/coverage/lcov-report/logger/logger-factory.provider.ts.html +142 -0
  94. package/coverage/lcov-report/logger/logger.factory.ts.html +172 -0
  95. package/coverage/lcov-report/logger/logger.model.ts.html +868 -0
  96. package/coverage/lcov-report/logger/logger.utils.ts.html +877 -0
  97. package/coverage/lcov-report/logger/model.ts.html +172 -0
  98. package/coverage/lcov-report/logger/otel.logger.ts.html +358 -0
  99. package/coverage/lcov-report/logger/platform.logger.ts.html +229 -0
  100. package/coverage/lcov-report/logger/trie-search.service.ts.html +616 -0
  101. package/coverage/lcov-report/platform/azure-platform.ts.html +256 -0
  102. package/coverage/lcov-report/platform/index.html +176 -0
  103. package/coverage/lcov-report/platform/index.ts.html +139 -0
  104. package/coverage/lcov-report/platform/platform-component-metadata.service.ts.html +115 -0
  105. package/coverage/lcov-report/platform/register-function.factory.ts.html +145 -0
  106. package/coverage/lcov-report/platform/register-trigger-handler.factory.ts.html +214 -0
  107. package/coverage/lcov-report/platform/security-context.ts.html +127 -0
  108. package/coverage/lcov-report/platform/startup.service.ts.html +106 -0
  109. package/coverage/lcov-report/platform/system-logger-name.provider.ts.html +145 -0
  110. package/coverage/lcov-report/platform/system.container.ts.html +169 -0
  111. package/coverage/lcov-report/platform-context.model.ts.html +124 -0
  112. package/coverage/lcov-report/platform.logger.ts.html +316 -0
  113. package/coverage/lcov-report/platform.model.ts.html +292 -0
  114. package/coverage/lcov-report/prettify.css +1 -0
  115. package/coverage/lcov-report/prettify.js +2 -0
  116. package/coverage/lcov-report/security/index.html +146 -0
  117. package/coverage/lcov-report/security/index.ts.html +91 -0
  118. package/coverage/lcov-report/security/security-context.ts.html +130 -0
  119. package/coverage/lcov-report/security/security.model.ts.html +169 -0
  120. package/coverage/lcov-report/shared/all-settled.util.ts.html +118 -0
  121. package/coverage/lcov-report/shared/decorators/decorators.model.ts.html +136 -0
  122. package/coverage/lcov-report/shared/decorators/decorators.ts.html +346 -0
  123. package/coverage/lcov-report/shared/decorators/index.html +146 -0
  124. package/coverage/lcov-report/shared/decorators/index.ts.html +91 -0
  125. package/coverage/lcov-report/shared/function-handler-metadata.reader.ts.html +172 -0
  126. package/coverage/lcov-report/shared/index.html +176 -0
  127. package/coverage/lcov-report/shared/index.ts.html +133 -0
  128. package/coverage/lcov-report/shared/ioc-container.utils.ts.html +115 -0
  129. package/coverage/lcov-report/shared/platform-context-local-storage.ts.html +133 -0
  130. package/coverage/lcov-report/shared/platform-context.manager.ts.html +253 -0
  131. package/coverage/lcov-report/shared/platform.context.provider.ts.html +136 -0
  132. package/coverage/lcov-report/shared/platform.model.ts.html +298 -0
  133. package/coverage/lcov-report/shared/security.model.ts.html +142 -0
  134. package/coverage/lcov-report/shared/trie-search.service.ts.html +337 -0
  135. package/coverage/lcov-report/shared/trigger-handler-metadata.reader.ts.html +166 -0
  136. package/coverage/lcov-report/shared/zod-parser-wrapper.service.ts.html +217 -0
  137. package/coverage/lcov-report/shared/zod-parser-wrapper.ts.html +232 -0
  138. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  139. package/coverage/lcov-report/sorter.js +210 -0
  140. package/coverage/lcov-report/src/context/index.html +191 -0
  141. package/coverage/lcov-report/src/context/index.ts.html +97 -0
  142. package/coverage/lcov-report/src/context/platform-context.manager.ts.html +193 -0
  143. package/coverage/lcov-report/src/context/platform-context.model.ts.html +262 -0
  144. package/coverage/lcov-report/src/context/platform-context.provider.ts.html +196 -0
  145. package/coverage/lcov-report/src/context/platform.execution.context.ts.html +217 -0
  146. package/coverage/lcov-report/src/context/wrapped-invocation-context.ts.html +163 -0
  147. package/coverage/lcov-report/src/event-hub-handler/azure-event-hub-trigger.model.ts.html +187 -0
  148. package/coverage/lcov-report/src/event-hub-handler/azure-event-hub-trigger.service.ts.html +769 -0
  149. package/coverage/lcov-report/src/event-hub-handler/decorators/decorators.model.ts.html +313 -0
  150. package/coverage/lcov-report/src/event-hub-handler/decorators/decorators.ts.html +778 -0
  151. package/coverage/lcov-report/src/event-hub-handler/decorators/index.html +146 -0
  152. package/coverage/lcov-report/src/event-hub-handler/decorators/index.ts.html +91 -0
  153. package/coverage/lcov-report/src/event-hub-handler/event-hub-handle-method-args-metadata.service.ts.html +130 -0
  154. package/coverage/lcov-report/src/event-hub-handler/event-hub-handler-metadata.reader.ts.html +199 -0
  155. package/coverage/lcov-report/src/event-hub-handler/event-hub-handler-registration.service.ts.html +220 -0
  156. package/coverage/lcov-report/src/event-hub-handler/event-hub-handler.factory.ts.html +283 -0
  157. package/coverage/lcov-report/src/event-hub-handler/event-hub-handler.model.ts.html +421 -0
  158. package/coverage/lcov-report/src/event-hub-handler/event-hub-handler.provider.ts.html +187 -0
  159. package/coverage/lcov-report/src/event-hub-handler/event-hub-trigger-support.factory.ts.html +787 -0
  160. package/coverage/lcov-report/src/event-hub-handler/event-hub-trigger-support.service.ts.html +832 -0
  161. package/coverage/lcov-report/src/event-hub-handler/event-hub-trigger.model.ts.html +193 -0
  162. package/coverage/lcov-report/src/event-hub-handler/event-hub-trigger.service.ts.html +859 -0
  163. package/coverage/lcov-report/src/event-hub-handler/event-hub-triggers-registration.service.ts.html +307 -0
  164. package/coverage/lcov-report/src/event-hub-handler/index.html +221 -0
  165. package/coverage/lcov-report/src/event-hub-handler/index.ts.html +142 -0
  166. package/coverage/lcov-report/src/framework.container.ts.html +157 -0
  167. package/coverage/lcov-report/src/http-controller/authentication.provider.ts.html +481 -0
  168. package/coverage/lcov-report/src/http-controller/authenticator.provider.ts.html +460 -0
  169. package/coverage/lcov-report/src/http-controller/azure-http-trigger.service.ts.html +865 -0
  170. package/coverage/lcov-report/src/http-controller/decorators/decorators.model.ts.html +553 -0
  171. package/coverage/lcov-report/src/http-controller/decorators/decorators.ts.html +1633 -0
  172. package/coverage/lcov-report/src/http-controller/decorators/index.html +146 -0
  173. package/coverage/lcov-report/src/http-controller/decorators/index.ts.html +94 -0
  174. package/coverage/lcov-report/src/http-controller/http-controller-metadata.reader.ts.html +271 -0
  175. package/coverage/lcov-report/src/http-controller/http-controller-metadata.service.ts.html +121 -0
  176. package/coverage/lcov-report/src/http-controller/http-controller-platform.model.ts.html +187 -0
  177. package/coverage/lcov-report/src/http-controller/http-controller-registration.service.ts.html +241 -0
  178. package/coverage/lcov-report/src/http-controller/http-controller.model.ts.html +784 -0
  179. package/coverage/lcov-report/src/http-controller/http-handler-support.factory.ts.html +481 -0
  180. package/coverage/lcov-report/src/http-controller/http-handler.factory.ts.html +406 -0
  181. package/coverage/lcov-report/src/http-controller/http-operation-registration.service.ts.html +328 -0
  182. package/coverage/lcov-report/src/http-controller/http-operations-registration.service.ts.html +328 -0
  183. package/coverage/lcov-report/src/http-controller/http-request-arg-provider.factory.ts.html +580 -0
  184. package/coverage/lcov-report/src/http-controller/http-request-handler.provider.ts.html +388 -0
  185. package/coverage/lcov-report/src/http-controller/http-response-processor.factory.ts.html +316 -0
  186. package/coverage/lcov-report/src/http-controller/index.html +311 -0
  187. package/coverage/lcov-report/src/http-controller/index.ts.html +226 -0
  188. package/coverage/lcov-report/src/http-controller/open-api-definition.service.ts.html +550 -0
  189. package/coverage/lcov-report/src/http-controller/open-api-metadata.service.ts.html +373 -0
  190. package/coverage/lcov-report/src/http-controller/open-api-print.service.ts.html +232 -0
  191. package/coverage/lcov-report/src/http-controller/open-api-registration.service.ts.html +220 -0
  192. package/coverage/lcov-report/src/http-controller/rest-open-api.regstry.ts.html +262 -0
  193. package/coverage/lcov-report/src/http-controller/security/authentication-service.factory.ts.html +280 -0
  194. package/coverage/lcov-report/src/http-controller/security/authentication-service.ts.html +139 -0
  195. package/coverage/lcov-report/src/http-controller/security/authenticator.provider.ts.html +799 -0
  196. package/coverage/lcov-report/src/http-controller/security/bearer-security-authentication.service.ts.html +133 -0
  197. package/coverage/lcov-report/src/http-controller/security/index.html +206 -0
  198. package/coverage/lcov-report/src/http-controller/security/index.ts.html +94 -0
  199. package/coverage/lcov-report/src/http-controller/security/model.ts.html +133 -0
  200. package/coverage/lcov-report/src/http-controller/security/operation-authentication.resolver.ts.html +418 -0
  201. package/coverage/lcov-report/src/http-controller/security/principal-merge.service.ts.html +163 -0
  202. package/coverage/lcov-report/src/http-controller/security/strict-principal-merge.servce.ts.html +154 -0
  203. package/coverage/lcov-report/src/http-controller/swagger-handling.service.ts.html +463 -0
  204. package/coverage/lcov-report/src/index.html +161 -0
  205. package/coverage/lcov-report/src/init.ts.html +97 -0
  206. package/coverage/lcov-report/src/logger/azure-log-transport.service.ts.html +433 -0
  207. package/coverage/lcov-report/src/logger/bindings.ts.html +253 -0
  208. package/coverage/lcov-report/src/logger/index.html +221 -0
  209. package/coverage/lcov-report/src/logger/index.ts.html +163 -0
  210. package/coverage/lcov-report/src/logger/log-level.service.ts.html +127 -0
  211. package/coverage/lcov-report/src/logger/log-transport.service.ts.html +571 -0
  212. package/coverage/lcov-report/src/logger/logger-factory.provider.ts.html +142 -0
  213. package/coverage/lcov-report/src/logger/logger.factory.ts.html +172 -0
  214. package/coverage/lcov-report/src/logger/logger.model.ts.html +868 -0
  215. package/coverage/lcov-report/src/logger/logger.utils.ts.html +877 -0
  216. package/coverage/lcov-report/src/logger/otel.logger.ts.html +358 -0
  217. package/coverage/lcov-report/src/logger/platform.logger.ts.html +229 -0
  218. package/coverage/lcov-report/src/logger/trie-search.service.ts.html +616 -0
  219. package/coverage/lcov-report/src/middleware.ts.html +232 -0
  220. package/coverage/lcov-report/src/platform/azure-platform.ts.html +256 -0
  221. package/coverage/lcov-report/src/platform/index.html +176 -0
  222. package/coverage/lcov-report/src/platform/index.ts.html +139 -0
  223. package/coverage/lcov-report/src/platform/platform-component-metadata.service.ts.html +115 -0
  224. package/coverage/lcov-report/src/platform/register-function.factory.ts.html +145 -0
  225. package/coverage/lcov-report/src/platform/register-trigger-handler.factory.ts.html +214 -0
  226. package/coverage/lcov-report/src/platform/security-context.ts.html +127 -0
  227. package/coverage/lcov-report/src/platform/startup.service.ts.html +202 -0
  228. package/coverage/lcov-report/src/platform/system-logger-name.provider.ts.html +145 -0
  229. package/coverage/lcov-report/src/platform/system.container.ts.html +172 -0
  230. package/coverage/lcov-report/src/platform.container.ts.html +148 -0
  231. package/coverage/lcov-report/src/security/index.html +146 -0
  232. package/coverage/lcov-report/src/security/index.ts.html +91 -0
  233. package/coverage/lcov-report/src/security/security-context.ts.html +175 -0
  234. package/coverage/lcov-report/src/security/security.model.ts.html +223 -0
  235. package/coverage/lcov-report/src/shared/decorators/decorators.model.ts.html +136 -0
  236. package/coverage/lcov-report/src/shared/decorators/decorators.ts.html +346 -0
  237. package/coverage/lcov-report/src/shared/decorators/index.html +146 -0
  238. package/coverage/lcov-report/src/shared/decorators/index.ts.html +91 -0
  239. package/coverage/lcov-report/src/shared/index.html +176 -0
  240. package/coverage/lcov-report/src/shared/index.ts.html +133 -0
  241. package/coverage/lcov-report/src/shared/ioc-container.utils.ts.html +115 -0
  242. package/coverage/lcov-report/src/shared/platform-context-local-storage.ts.html +133 -0
  243. package/coverage/lcov-report/src/shared/platform.model.ts.html +298 -0
  244. package/coverage/lcov-report/src/shared/security.model.ts.html +139 -0
  245. package/coverage/lcov-report/src/shared/trie-search.service.ts.html +337 -0
  246. package/coverage/lcov-report/src/shared/trigger-handler-metadata.reader.ts.html +166 -0
  247. package/coverage/lcov-report/src/shared/zod-parser-wrapper.ts.html +232 -0
  248. package/coverage/lcov-report/test/index.html +116 -0
  249. package/coverage/lcov-report/test/utils.ts.html +100 -0
  250. package/coverage/lcov-report/test-utils/index.html +116 -0
  251. package/coverage/lcov-report/test-utils/utils.ts.html +100 -0
  252. package/coverage/lcov-report/trie-search.service.ts.html +469 -0
  253. package/coverage/lcov-report/trigger-handler-metadata.reader.ts.html +187 -0
  254. package/coverage/lcov-report/wrapped-invocation-context.ts.html +163 -0
  255. package/coverage/lcov-report/zod-parser-wrapper.ts.html +232 -0
  256. package/coverage/lcov.info +3220 -0
  257. package/dist/assets/swagger-ui/LICENSE +202 -0
  258. package/dist/assets/swagger-ui/NOTICE +2 -0
  259. package/dist/assets/swagger-ui/README.md +40 -0
  260. package/dist/assets/swagger-ui/absolute-path.js +1 -0
  261. package/dist/assets/swagger-ui/favicon-16x16.png +0 -0
  262. package/dist/assets/swagger-ui/favicon-32x32.png +0 -0
  263. package/dist/assets/swagger-ui/index.css +16 -0
  264. package/dist/assets/swagger-ui/index.html +19 -0
  265. package/dist/assets/swagger-ui/index.js +1 -0
  266. package/dist/assets/swagger-ui/log.bundle-sizes.swagger-ui.txt +114 -0
  267. package/dist/assets/swagger-ui/log.es-bundle-core-sizes.swagger-ui.txt +14 -0
  268. package/dist/assets/swagger-ui/log.es-bundle-sizes.swagger-ui.txt +114 -0
  269. package/dist/assets/swagger-ui/oauth2-redirect.html +6 -0
  270. package/dist/assets/swagger-ui/oauth2-redirect.js +1 -0
  271. package/dist/assets/swagger-ui/package.json +20 -0
  272. package/dist/assets/swagger-ui/swagger-initializer.js +1 -0
  273. package/dist/assets/swagger-ui/swagger-ui-bundle.js +2 -0
  274. package/dist/assets/swagger-ui/swagger-ui-bundle.js.LICENSE.txt +106 -0
  275. package/dist/assets/swagger-ui/swagger-ui-bundle.js.map +1 -0
  276. package/dist/assets/swagger-ui/swagger-ui-es-bundle-core.js +2 -0
  277. package/dist/assets/swagger-ui/swagger-ui-es-bundle-core.js.LICENSE.txt +35 -0
  278. package/dist/assets/swagger-ui/swagger-ui-es-bundle-core.js.map +1 -0
  279. package/dist/assets/swagger-ui/swagger-ui-es-bundle.js +2 -0
  280. package/dist/assets/swagger-ui/swagger-ui-es-bundle.js.LICENSE.txt +106 -0
  281. package/dist/assets/swagger-ui/swagger-ui-es-bundle.js.map +1 -0
  282. package/dist/assets/swagger-ui/swagger-ui-standalone-preset.js +2 -0
  283. package/dist/assets/swagger-ui/swagger-ui-standalone-preset.js.LICENSE.txt +22 -0
  284. package/dist/assets/swagger-ui/swagger-ui-standalone-preset.js.map +1 -0
  285. package/dist/assets/swagger-ui/swagger-ui.css +3 -0
  286. package/dist/assets/swagger-ui/swagger-ui.css.map +1 -0
  287. package/dist/assets/swagger-ui/swagger-ui.js +1 -0
  288. package/dist/assets/swagger-ui/swagger-ui.js.map +1 -0
  289. package/dist/index.cjs +3 -0
  290. package/dist/index.cjs.LICENSE.txt +24 -0
  291. package/dist/src/context/index.d.ts +4 -0
  292. package/dist/src/context/platform-context.manager.d.ts +23 -0
  293. package/dist/src/context/platform-context.model.d.ts +56 -0
  294. package/dist/src/context/platform-context.provider.d.ts +23 -0
  295. package/dist/src/context/platform.execution.context.d.ts +13 -0
  296. package/dist/src/context/wrapped-invocation-context.d.ts +5 -0
  297. package/dist/src/event-hub-handler/decorators/decorators.d.ts +161 -0
  298. package/dist/src/event-hub-handler/decorators/decorators.model.d.ts +62 -0
  299. package/dist/src/event-hub-handler/decorators/index.d.ts +2 -0
  300. package/dist/src/event-hub-handler/event-hub-handler-metadata.reader.d.ts +8 -0
  301. package/dist/src/event-hub-handler/event-hub-handler-registration.service.d.ts +12 -0
  302. package/dist/src/event-hub-handler/event-hub-handler.factory.d.ts +13 -0
  303. package/dist/src/event-hub-handler/event-hub-handler.model.d.ts +101 -0
  304. package/dist/src/event-hub-handler/event-hub-trigger-support.factory.d.ts +10 -0
  305. package/dist/src/event-hub-handler/event-hub-trigger.model.d.ts +39 -0
  306. package/dist/src/event-hub-handler/event-hub-triggers-registration.service.d.ts +18 -0
  307. package/dist/src/event-hub-handler/index.d.ts +4 -0
  308. package/dist/src/framework.container.d.ts +6 -0
  309. package/dist/src/http-controller/decorators/decorators.d.ts +410 -0
  310. package/dist/src/http-controller/decorators/decorators.model.d.ts +123 -0
  311. package/dist/src/http-controller/decorators/index.d.ts +3 -0
  312. package/dist/src/http-controller/http-controller-metadata.reader.d.ts +8 -0
  313. package/dist/src/http-controller/http-controller-registration.service.d.ts +12 -0
  314. package/dist/src/http-controller/http-controller.model.d.ts +131 -0
  315. package/dist/src/http-controller/http-handler-support.factory.d.ts +26 -0
  316. package/dist/src/http-controller/http-handler.factory.d.ts +16 -0
  317. package/dist/src/http-controller/http-operations-registration.service.d.ts +22 -0
  318. package/dist/src/http-controller/http-request-arg-provider.factory.d.ts +12 -0
  319. package/dist/src/http-controller/http-response-processor.factory.d.ts +10 -0
  320. package/dist/src/http-controller/index.d.ts +11 -0
  321. package/dist/src/http-controller/open-api-definition.service.d.ts +29 -0
  322. package/dist/src/http-controller/open-api-metadata.service.d.ts +11 -0
  323. package/dist/src/http-controller/open-api-print.service.d.ts +8 -0
  324. package/dist/src/http-controller/open-api-registration.service.d.ts +17 -0
  325. package/dist/src/http-controller/security/authentication-service.d.ts +15 -0
  326. package/dist/src/http-controller/security/authenticator.provider.d.ts +31 -0
  327. package/dist/src/http-controller/security/bearer-security-authentication.service.d.ts +9 -0
  328. package/dist/src/http-controller/security/bearer-token.service.d.ts +5 -0
  329. package/dist/src/http-controller/security/index.d.ts +3 -0
  330. package/dist/src/http-controller/security/operation-authentication.resolver.d.ts +18 -0
  331. package/dist/src/http-controller/security/principal-merge.service.d.ts +11 -0
  332. package/dist/src/http-controller/security/strict-principal-merge.servce.d.ts +5 -0
  333. package/dist/src/http-controller/swagger-handling.service.d.ts +11 -0
  334. package/dist/src/index.d.ts +9 -0
  335. package/dist/src/init.d.ts +1 -0
  336. package/dist/src/logger/bindings.d.ts +7 -0
  337. package/dist/src/logger/index.d.ts +6 -0
  338. package/dist/src/logger/log-level.service.d.ts +7 -0
  339. package/dist/src/logger/log-transport.service.d.ts +19 -0
  340. package/dist/src/logger/logger.model.d.ts +241 -0
  341. package/dist/src/logger/logger.utils.d.ts +17 -0
  342. package/dist/src/logger/otel.logger.d.ts +9 -0
  343. package/dist/src/logger/trie-search.service.d.ts +65 -0
  344. package/dist/src/middleware.d.ts +10 -0
  345. package/dist/src/platform/azure-platform.d.ts +15 -0
  346. package/dist/src/platform/index.d.ts +5 -0
  347. package/dist/src/platform/model.d.ts +18 -0
  348. package/dist/src/platform/register-trigger-handler.factory.d.ts +5 -0
  349. package/dist/src/platform/startup.service.d.ts +36 -0
  350. package/dist/src/platform/system-logger-name.provider.d.ts +1 -0
  351. package/dist/src/platform.container.d.ts +3 -0
  352. package/dist/src/security/index.d.ts +2 -0
  353. package/dist/src/security/security-context.d.ts +22 -0
  354. package/dist/src/security/security.model.d.ts +37 -0
  355. package/dist/src/shared/decorators/decorators.d.ts +37 -0
  356. package/dist/src/shared/decorators/decorators.model.d.ts +13 -0
  357. package/dist/src/shared/decorators/index.d.ts +2 -0
  358. package/dist/src/shared/index.d.ts +8 -0
  359. package/dist/src/shared/ioc-container.utils.d.ts +7 -0
  360. package/dist/src/shared/platform.model.d.ts +44 -0
  361. package/dist/src/shared/trigger-handler-metadata.reader.d.ts +6 -0
  362. package/dist/src/shared/zod-parser-wrapper.d.ts +5 -0
  363. package/docs/logging.md +805 -0
  364. package/package.json +87 -0
  365. package/src/context/index.ts +4 -0
  366. package/src/context/platform-context.manager.ts +36 -0
  367. package/src/context/platform-context.model.ts +59 -0
  368. package/src/context/platform-context.provider.ts +37 -0
  369. package/src/context/platform.execution.context.ts +44 -0
  370. package/src/context/wrapped-invocation-context.ts +26 -0
  371. package/src/event-hub-handler/decorators/decorators.model.ts +76 -0
  372. package/src/event-hub-handler/decorators/decorators.ts +231 -0
  373. package/src/event-hub-handler/decorators/index.ts +2 -0
  374. package/src/event-hub-handler/event-hub-handler-metadata.reader.ts +38 -0
  375. package/src/event-hub-handler/event-hub-handler-registration.service.ts +45 -0
  376. package/src/event-hub-handler/event-hub-handler.factory.ts +66 -0
  377. package/src/event-hub-handler/event-hub-handler.model.ts +112 -0
  378. package/src/event-hub-handler/event-hub-trigger-support.factory.ts +234 -0
  379. package/src/event-hub-handler/event-hub-trigger.model.ts +36 -0
  380. package/src/event-hub-handler/event-hub-triggers-registration.service.ts +74 -0
  381. package/src/event-hub-handler/index.ts +19 -0
  382. package/src/framework.container.ts +24 -0
  383. package/src/http-controller/decorators/decorators.model.ts +156 -0
  384. package/src/http-controller/decorators/decorators.ts +516 -0
  385. package/src/http-controller/decorators/index.ts +3 -0
  386. package/src/http-controller/http-controller-metadata.reader.ts +62 -0
  387. package/src/http-controller/http-controller-registration.service.ts +52 -0
  388. package/src/http-controller/http-controller.model.ts +233 -0
  389. package/src/http-controller/http-handler-support.factory.ts +132 -0
  390. package/src/http-controller/http-handler.factory.ts +107 -0
  391. package/src/http-controller/http-operations-registration.service.ts +81 -0
  392. package/src/http-controller/http-request-arg-provider.factory.ts +165 -0
  393. package/src/http-controller/http-response-processor.factory.ts +77 -0
  394. package/src/http-controller/index.ts +47 -0
  395. package/src/http-controller/open-api-definition.service.ts +155 -0
  396. package/src/http-controller/open-api-metadata.service.ts +96 -0
  397. package/src/http-controller/open-api-print.service.ts +49 -0
  398. package/src/http-controller/open-api-registration.service.ts +45 -0
  399. package/src/http-controller/security/authentication-service.ts +18 -0
  400. package/src/http-controller/security/authenticator.provider.ts +238 -0
  401. package/src/http-controller/security/bearer-security-authentication.service.ts +16 -0
  402. package/src/http-controller/security/bearer-token.service.ts +6 -0
  403. package/src/http-controller/security/index.ts +3 -0
  404. package/src/http-controller/security/operation-authentication.resolver.ts +111 -0
  405. package/src/http-controller/security/principal-merge.service.ts +26 -0
  406. package/src/http-controller/security/strict-principal-merge.servce.ts +23 -0
  407. package/src/http-controller/swagger-handling.service.ts +126 -0
  408. package/src/index.ts +80 -0
  409. package/src/init.ts +4 -0
  410. package/src/logger/bindings.ts +56 -0
  411. package/src/logger/index.ts +26 -0
  412. package/src/logger/log-level.service.ts +14 -0
  413. package/src/logger/log-transport.service.ts +162 -0
  414. package/src/logger/logger.model.ts +261 -0
  415. package/src/logger/logger.utils.ts +264 -0
  416. package/src/logger/otel.logger.ts +91 -0
  417. package/src/logger/trie-search.service.ts +177 -0
  418. package/src/middleware.ts +49 -0
  419. package/src/platform/azure-platform.ts +57 -0
  420. package/src/platform/index.ts +18 -0
  421. package/src/platform/model.ts +19 -0
  422. package/src/platform/register-trigger-handler.factory.ts +43 -0
  423. package/src/platform/startup.service.ts +39 -0
  424. package/src/platform/system-logger-name.provider.ts +20 -0
  425. package/src/platform.container.ts +21 -0
  426. package/src/security/index.ts +2 -0
  427. package/src/security/security-context.ts +30 -0
  428. package/src/security/security.model.ts +46 -0
  429. package/src/shared/decorators/decorators.model.ts +17 -0
  430. package/src/shared/decorators/decorators.ts +87 -0
  431. package/src/shared/decorators/index.ts +2 -0
  432. package/src/shared/index.ts +16 -0
  433. package/src/shared/ioc-container.utils.ts +10 -0
  434. package/src/shared/platform.model.ts +71 -0
  435. package/src/shared/trigger-handler-metadata.reader.ts +27 -0
  436. package/src/shared/zod-parser-wrapper.ts +49 -0
  437. package/src/test-utilities/index.ts +1 -0
  438. package/src/test-utilities/utils.ts +5 -0
  439. package/tsconfig.test.json +8 -0
@@ -0,0 +1,43 @@
1
+ import { ResolutionContext } from 'inversify';
2
+ import { LOGGER_FACTORY } from 'logger';
3
+ import {
4
+ serviceIdentifier,
5
+ TRIGGER_HANDLER_REGISTRATION_SERVICE,
6
+ TriggerHandlerClass,
7
+ TriggerHandlerMetadataReader,
8
+ } from 'shared';
9
+
10
+ export const REGISTER_TRIGGER_HANDLER_FACTORY = serviceIdentifier<RegisterTriggerHandlerFactory>(
11
+ 'Register Trigger Handler Factory',
12
+ );
13
+
14
+ export type RegisterTriggerHandlerFactory = (triggerHandlerClass: TriggerHandlerClass) => void;
15
+
16
+ export function bindRegisterTriggerHandlerFactory(context: ResolutionContext): RegisterTriggerHandlerFactory {
17
+ const loggerFactory = context.get(LOGGER_FACTORY);
18
+ const logger = loggerFactory();
19
+ const metadataService = context.get(TriggerHandlerMetadataReader);
20
+ return (triggerHandlerClass: TriggerHandlerClass): void => {
21
+ try {
22
+ const metadata = metadataService.getHandlerClassMetadata(triggerHandlerClass);
23
+ const { type } = metadata;
24
+ const functionRegistrationService = context.get(TRIGGER_HANDLER_REGISTRATION_SERVICE, {
25
+ name: type,
26
+ optional: true,
27
+ });
28
+ if (functionRegistrationService === undefined) {
29
+ logger.warn(` No registration service ${TRIGGER_HANDLER_REGISTRATION_SERVICE.toString()}`, {
30
+ triggerHandlerClass: triggerHandlerClass.name,
31
+ triggerType: type,
32
+ });
33
+ } else {
34
+ functionRegistrationService.register(triggerHandlerClass);
35
+ }
36
+ } catch (error) {
37
+ logger.error(`Failed registration of trigger handler ${triggerHandlerClass.name}`, {
38
+ triggerHandlerClass: triggerHandlerClass.name,
39
+ error,
40
+ });
41
+ }
42
+ };
43
+ }
@@ -0,0 +1,39 @@
1
+ import { serviceIdentifier } from 'shared';
2
+
3
+ /**
4
+ * Represents a service responsible for performing startup tasks.
5
+ *
6
+ * This interface defines a single method, `startup`, which is expected to be implemented by any class that provides startup functionality.
7
+ * The `startup` method should return a Promise that resolves when the startup tasks are complete.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * @Injectable()
12
+ * export class MyStartupService implements IStartupService {
13
+ * async startup(): Promise<void> {
14
+ * // Perform startup tasks here
15
+ * }
16
+ * }
17
+ * ...
18
+ * export const StartupModule = new ContainerModule((bind) => {
19
+ * bind<IStartupService>(STARTUP_SERVICE).to(MyStartupService);
20
+ * });
21
+ * ...
22
+ * startPlatform({
23
+ * ...
24
+ * modules: [
25
+ * ...
26
+ * StartupModule,
27
+ * ...
28
+ * ],
29
+ * ```
30
+ */
31
+ export interface IStartupService {
32
+ startup(): Promise<void>;
33
+ }
34
+
35
+ /**
36
+ * A unique identifier for the `IStartupService` in the dependency injection container.
37
+ * This identifier can be used to register and retrieve the startup service implementation.
38
+ */
39
+ export const STARTUP_SERVICE = serviceIdentifier<IStartupService>('AzFunctions.StartupService');
@@ -0,0 +1,20 @@
1
+ import { SYSTEM_LOGGER_NAME_PREFIX } from 'logger';
2
+
3
+ const regexp =
4
+ // eslint-disable-next-line sonarjs/regex-complexity,sonarjs/slow-regex
5
+ /^\s*at\s+(?:(?:new\s+(?<constructor>[\w$]+))|(?:(?:Object\.)?(?<function>[\w$]+))|(?:(?<class>[\w$]+)\.(?:[\w$+]+)))\s+(?:\[as\s[\w$]+\]\s)?(?:\(.*packages[\\/]extensions[\\/]az-functions[\\/]src(?<path>(?:[\\/][^:)\\/]*)*)[\\/].*\.ts:\d*:\d+\))$/;
6
+
7
+ export function systemLoggerNameProvider(stackEntry?: string): string | undefined {
8
+ const stackLines = stackEntry?.split('\n') ?? [];
9
+ let callerLine = stackLines.shift();
10
+ while (callerLine !== undefined) {
11
+ const match = regexp.exec(callerLine.trim());
12
+ if (match !== null) {
13
+ const path = match.groups?.['path']?.replace(/\//g, '.');
14
+ const prefix = match.groups?.['constructor'] ?? match.groups?.['class'] ?? match.groups?.['function'];
15
+ return `${SYSTEM_LOGGER_NAME_PREFIX}${path}.${prefix}`;
16
+ } else {
17
+ callerLine = stackLines.shift();
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,21 @@
1
+ import {
2
+ BasePlatformContextManager,
3
+ PLATFORM_CONTEXT_MANAGER,
4
+ PLATFORM_CONTEXT_PROVIDER,
5
+ PlatformExecutionContextProvider,
6
+ } from 'context';
7
+ import { Container } from 'inversify';
8
+ import { LoggerConfiguration, provideLoggerModule } from 'logger';
9
+ import { SecurityContext } from 'security';
10
+
11
+ export function providePlatformContainer(loggerConfiguration: LoggerConfiguration | undefined) {
12
+ const platformContainer = new Container({
13
+ defaultScope: 'Singleton',
14
+ });
15
+ platformContainer.bind(PLATFORM_CONTEXT_MANAGER).to(BasePlatformContextManager);
16
+ platformContainer.loadSync(provideLoggerModule(loggerConfiguration));
17
+ platformContainer.get(PLATFORM_CONTEXT_MANAGER);
18
+ platformContainer.bind(SecurityContext).toSelf();
19
+ platformContainer.bind(PLATFORM_CONTEXT_PROVIDER).to(PlatformExecutionContextProvider);
20
+ return platformContainer;
21
+ }
@@ -0,0 +1,2 @@
1
+ export * from './security-context';
2
+ export * from './security.model';
@@ -0,0 +1,30 @@
1
+ import { PLATFORM_CONTEXT_MANAGER, PlatformContextManager } from 'context';
2
+ import { inject, injectable } from 'inversify';
3
+ import { AuthContext, AUTHENTICATION_CONTEXT_KEY } from './security.model';
4
+
5
+ /**
6
+ * SecurityContext provides access to the current authentication context.
7
+ *
8
+ * It retrieves the authentication information from the platform context manager, which is typically set up during the request handling process.
9
+ *
10
+ * Usage:
11
+ *
12
+ * ```ts
13
+ * const securityContext = container.get(SecurityContext);
14
+ * const authContext = securityContext.getAuthentication();
15
+ * if (authContext) {
16
+ * // Access user information, roles, etc.
17
+ * }
18
+ * ```
19
+ */
20
+ @injectable()
21
+ export class SecurityContext {
22
+ constructor(
23
+ @inject(PLATFORM_CONTEXT_MANAGER)
24
+ private readonly contextManager: PlatformContextManager,
25
+ ) {}
26
+
27
+ getAuthentication(): AuthContext | undefined {
28
+ return this.contextManager.active()?.getValue(AUTHENTICATION_CONTEXT_KEY);
29
+ }
30
+ }
@@ -0,0 +1,46 @@
1
+ import { createPlatformContextValueKey } from 'context';
2
+ import { AzFunctionsErrorOptions, AzFunctionsRuntimeError } from 'shared';
3
+
4
+ /**
5
+ *
6
+ */
7
+ export class AuthenticationError extends AzFunctionsRuntimeError {
8
+ constructor(message?: string, options?: AzFunctionsErrorOptions) {
9
+ super(message, options);
10
+ }
11
+ }
12
+
13
+ /**
14
+ * Represents an authenticated principal in the authentication context.
15
+ * @property {string} subject - The unique identifier of the principal (e.g., user ID).
16
+ * @property {string} type - The type of the principal (e.g., "user", "service").
17
+ * @property {string} scheme - The authentication scheme used for the principal (e.g., "bearer", "basic").
18
+ * @property {string[]} scopes - An array of scopes associated with the principal.
19
+ * @property {Record<string, unknown>} [meta] - Optional additional metadata about the principal.
20
+ */
21
+ export interface Principal {
22
+ subject: string;
23
+ type: string;
24
+ scheme: string;
25
+ scopes: string[];
26
+ meta?: Record<string, unknown>;
27
+ }
28
+
29
+ /**
30
+ * Represents the authentication context for a request.
31
+ * @property {Principal | null} principal - The primary authenticated principal, or null if not authenticated.
32
+ * @property {Principal[]} principals - An array of all principals associated with the request.
33
+ * @property {string[]} scopes - An array of scopes associated with the authenticated principal.
34
+ */
35
+ export interface AuthContext {
36
+ principal: Principal | null;
37
+ principals: Principal[];
38
+ scopes: string[];
39
+ }
40
+
41
+ /**
42
+ * A unique key for accessing the authentication context in the platform context.
43
+ */
44
+ export const AUTHENTICATION_CONTEXT_KEY = createPlatformContextValueKey<AuthContext>(
45
+ 'AzFunctions.ContextKey.Authentication',
46
+ );
@@ -0,0 +1,17 @@
1
+ import { AzFunctionsSystemError } from '../platform.model';
2
+
3
+ export interface ArgMetadata {
4
+ type: string;
5
+ }
6
+
7
+ export interface CommonArgMetadata extends ArgMetadata {
8
+ type: 'invocationContext' | 'undefined';
9
+ }
10
+
11
+ export interface ArgsMetadata<T extends ArgMetadata> {
12
+ args: T[];
13
+ }
14
+
15
+ export type ArgMetadataProvider<T extends ArgMetadata> = (paramType: unknown) => T;
16
+
17
+ export class AzFunctionsDecoratorError extends AzFunctionsSystemError {}
@@ -0,0 +1,87 @@
1
+ import { FUNCTION_HANDLER_METADATA } from '../platform.model';
2
+ import {
3
+ ArgMetadata,
4
+ ArgMetadataProvider,
5
+ ArgsMetadata,
6
+ AzFunctionsDecoratorError,
7
+ CommonArgMetadata,
8
+ } from './decorators.model';
9
+
10
+ export function adjustMetadata<T extends ArgMetadata>(
11
+ metadataKey: unknown,
12
+ operationArg: T,
13
+ argMetadataProvider: ArgMetadataProvider<T>,
14
+ ): ParameterDecorator {
15
+ return (target, propertyKey, parameterIndex) => {
16
+ if (propertyKey === undefined) {
17
+ throw new AzFunctionsDecoratorError('The decorator can only be used on method parameters.');
18
+ }
19
+ const metadata: ArgsMetadata<T> =
20
+ Reflect.getOwnMetadata(metadataKey, target, propertyKey) ??
21
+ initializeMetadata(target, propertyKey, argMetadataProvider);
22
+ metadata.args[parameterIndex] = operationArg;
23
+ Reflect.defineMetadata(metadataKey, metadata, target, propertyKey);
24
+ };
25
+ }
26
+
27
+ export function initializeMetadata<T extends ArgMetadata>(
28
+ target: object,
29
+ propertyKey: string | symbol,
30
+ argMetadataProvider: ArgMetadataProvider<T>,
31
+ ): ArgsMetadata<T> {
32
+ const paramTypes = Reflect.getOwnMetadata('design:paramtypes', target, propertyKey) as unknown[] | undefined;
33
+ if (!paramTypes) {
34
+ throw new AzFunctionsDecoratorError(
35
+ `Method ${target.constructor.name}.${String(propertyKey)} doesn't exist or has no metadata. Be sure to import reflect-metadata.`,
36
+ );
37
+ }
38
+ return {
39
+ args: paramTypes.map(paramType => argMetadataProvider(paramType)),
40
+ };
41
+ }
42
+
43
+ export function getCommonArg(): CommonArgMetadata {
44
+ return { type: 'undefined' };
45
+ }
46
+
47
+ /**
48
+ * Parameter decorator to inject the Azure Functions `InvocationContext` into a function parameter.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * @HttpController({
53
+ * path: '/users',
54
+ * })
55
+ * export class UserController {
56
+ * constructor(private readonly adUsersService: AdUsersService
57
+ * private readonly usersMapper: UsersMapper) {}
58
+ *
59
+ * @Get({
60
+ * directResponse: {
61
+ * contentSchema: usersResponseDtoSchema,
62
+ * description: 'Returns a list of users',
63
+ * },
64
+ * })
65
+ * async getUsers(@InvocationCtx() invocationCtx: InvocationContext): Promise<UsersResponseDto> {
66
+ * invocationCtx.log.info('Requesting users.');
67
+ *
68
+ * const adUsers = await this.adUsersService.getUsers();
69
+ * const items = this.usersMapper.fromAdUsers(adUsers);
70
+ *
71
+ * invocationCtx.log.info('Responding users.');
72
+ * invocationCtx.log.debug('Responding %n users.', items.length);
73
+ *
74
+ * return { items };
75
+ * }
76
+ * }
77
+ * ```
78
+ */
79
+ export function InvocationCtx() {
80
+ return adjustMetadata(
81
+ FUNCTION_HANDLER_METADATA,
82
+ {
83
+ type: 'invocationContext',
84
+ } as CommonArgMetadata,
85
+ getCommonArg,
86
+ );
87
+ }
@@ -0,0 +1,2 @@
1
+ export * from './decorators';
2
+ export * from './decorators.model';
@@ -0,0 +1,16 @@
1
+ import { ContainerModule } from 'inversify';
2
+ import * as path from 'node:path';
3
+ import { BASE_DIR } from './platform.model';
4
+ import { TriggerHandlerMetadataReader } from './trigger-handler-metadata.reader';
5
+
6
+ export { TrieSearchService } from '../logger/trie-search.service';
7
+ export * from './decorators';
8
+ export { serviceIdentifier } from './ioc-container.utils';
9
+ export * from './platform.model';
10
+ export * from './trigger-handler-metadata.reader';
11
+ export { parseWithZod, ZodParserError } from './zod-parser-wrapper';
12
+
13
+ export const SharedModule = new ContainerModule(({ bind }) => {
14
+ bind(BASE_DIR).toConstantValue(path.resolve(__dirname, '.'));
15
+ bind(TriggerHandlerMetadataReader).toSelf();
16
+ });
@@ -0,0 +1,10 @@
1
+ import { ServiceIdentifier } from 'inversify';
2
+
3
+ /**
4
+ * Creates a typed service identifier for use with InversifyJS.
5
+ * @param key The unique key for the service.
6
+ * @returns A symbol that can be used as a service identifier.
7
+ */
8
+ export function serviceIdentifier<T>(key: string): ServiceIdentifier<T> {
9
+ return Symbol.for(key);
10
+ }
@@ -0,0 +1,71 @@
1
+ import { Container } from 'inversify';
2
+ import { z } from 'zod';
3
+ import { serviceIdentifier } from './ioc-container.utils';
4
+
5
+ export const BASE_DIR = serviceIdentifier<string>('Base Directory for Azure Functions');
6
+ export const PLATFORM_CONTAINER = serviceIdentifier<Container>('Platform Container');
7
+
8
+ export const FUNCTION_HANDLER_METADATA = Symbol.for('AzFunctions.Metadata.Handler');
9
+
10
+ export const platformModeSchema = z.enum(['start', 'print-open-api']).catch('start');
11
+
12
+ /**
13
+ * Options for creating an AzFunctionsError.
14
+ * @property {Record<string, unknown>} [details] - Optional additional details about the error.
15
+ */
16
+ export interface AzFunctionsErrorOptions extends ErrorOptions {
17
+ details?: Record<string, unknown>;
18
+ }
19
+
20
+ export abstract class AzFunctionsError extends Error {
21
+ protected _details?: Record<string, unknown>;
22
+ get details(): Readonly<Record<string, unknown>> | undefined {
23
+ return this._details;
24
+ }
25
+
26
+ protected constructor(message?: string, options?: AzFunctionsErrorOptions) {
27
+ super(message, options);
28
+ this.name = this.constructor.name;
29
+ Object.setPrototypeOf(this, new.target.prototype);
30
+ this._details = options?.details;
31
+ }
32
+ }
33
+
34
+ export abstract class AzFunctionsSystemError extends AzFunctionsError {
35
+ constructor(message?: string, options?: AzFunctionsErrorOptions) {
36
+ super(message, options);
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Abstract base class for runtime errors in Azure Functions.
42
+ * @example
43
+ * ```ts
44
+ * class MyRuntimeError extends AzFunctionsRuntimeError {}
45
+ * ```
46
+ */
47
+ export class AzFunctionsRuntimeError extends AzFunctionsError {
48
+ constructor(message?: string, options?: AzFunctionsErrorOptions) {
49
+ super(message, options);
50
+ }
51
+ }
52
+
53
+ export type TriggerHandlerClass<
54
+ TInstance extends object = object,
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ TArgs extends unknown[] = any[],
57
+ > = new (...args: TArgs) => TInstance;
58
+
59
+ export interface TriggerHandlerClassMetadata {
60
+ type: string;
61
+ }
62
+
63
+ export const TRIGGER_HANDLER_REGISTRATION_SERVICE = serviceIdentifier<TriggerHandlerRegistrationService>(
64
+ 'AzFunctions.TriggerHandler.RegistrationService',
65
+ );
66
+
67
+ export interface TriggerHandlerRegistrationService {
68
+ register(triggerHandlerClass: TriggerHandlerClass): void;
69
+ }
70
+
71
+ export class HandlerArgsParseError extends AzFunctionsRuntimeError {}
@@ -0,0 +1,27 @@
1
+ import { injectable } from 'inversify';
2
+ import {
3
+ AzFunctionsSystemError,
4
+ FUNCTION_HANDLER_METADATA,
5
+ TriggerHandlerClass,
6
+ TriggerHandlerClassMetadata,
7
+ } from './platform.model';
8
+
9
+ export class TriggerHandlerMetadataError extends AzFunctionsSystemError {}
10
+
11
+ @injectable()
12
+ export class TriggerHandlerMetadataReader {
13
+ getHandlerClassMetadata(triggerHandlerClass: TriggerHandlerClass): TriggerHandlerClassMetadata {
14
+ const metadata = Reflect.getMetadata(FUNCTION_HANDLER_METADATA, triggerHandlerClass);
15
+ if (metadata === undefined) {
16
+ throw new TriggerHandlerMetadataError(
17
+ `No trigger handler metadata found for triggerHandlerClass=${triggerHandlerClass.name}`,
18
+ {
19
+ details: {
20
+ triggerHandlerClassName: triggerHandlerClass.name,
21
+ },
22
+ },
23
+ );
24
+ }
25
+ return metadata as TriggerHandlerClassMetadata;
26
+ }
27
+ }
@@ -0,0 +1,49 @@
1
+ import { z, ZodError } from 'zod';
2
+
3
+ export class ZodParserError extends Error {
4
+ constructor(message?: string, options?: ErrorOptions) {
5
+ super(message, options);
6
+ this.name = this.constructor.name;
7
+ Object.setPrototypeOf(this, new.target.prototype);
8
+ }
9
+ }
10
+
11
+ function formatZodErrorIssues(error: ZodError) {
12
+ const lines: string[] = [];
13
+ for (const issue of error.issues.slice(0, 5)) {
14
+ lines.push(`✖ ${issue.message}`);
15
+ lines.push(` → at ${toDotPath(issue.path)}`);
16
+ }
17
+ if (error.issues.length > 5) {
18
+ lines.push(`... and ${error.issues.length - 5} more issues`);
19
+ }
20
+
21
+ return lines.join('\n');
22
+ }
23
+
24
+ export function parseWithZod<T>(schema: z.ZodType<T>, data: unknown): T {
25
+ const safeParse = schema.safeParse(data);
26
+ if (safeParse.success) {
27
+ return safeParse.data;
28
+ } else {
29
+ const error = safeParse.error;
30
+ const zodErrorIssues = formatZodErrorIssues(error);
31
+ const message = `Error parsing data:
32
+ ${zodErrorIssues}`;
33
+ throw new ZodParserError(message);
34
+ }
35
+ }
36
+
37
+ function toDotPath(path: PropertyKey[]): string {
38
+ const segs: string[] = [];
39
+ for (const seg of path) {
40
+ if (typeof seg === 'number') segs.push(`[${seg}]`);
41
+ else if (typeof seg === 'symbol' || /[^\w$]/.test(seg)) segs.push(`[${JSON.stringify(seg)}]`);
42
+ else {
43
+ if (segs.length) segs.push('.');
44
+ segs.push(seg);
45
+ }
46
+ }
47
+
48
+ return segs.join('');
49
+ }
@@ -0,0 +1 @@
1
+ export { getPartialFixture } from './utils';
@@ -0,0 +1,5 @@
1
+ import { PartialDeep } from 'type-fest';
2
+
3
+ export function getPartialFixture<T>(fixture?: PartialDeep<T>): T {
4
+ return (fixture ?? {}) as T;
5
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "test",
5
+ "types": ["node", "reflect-metadata", "jest", "jest-extended", "jest-mock-extended"]
6
+ },
7
+ "exclude": ["node_modules", "dist"]
8
+ }