@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,56 @@
1
+ import { AzureMonitorLogExporter } from '@azure/monitor-opentelemetry-exporter';
2
+ import { resourceFromAttributes } from '@opentelemetry/resources';
3
+ import { BatchLogRecordProcessor, LoggerProvider } from '@opentelemetry/sdk-logs';
4
+ import { ATTR_SERVICE_INSTANCE_ID, ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic-conventions';
5
+ import { ResolutionContext } from 'inversify';
6
+ import * as winston from 'winston';
7
+ import { AzFunctionsTransport } from './log-transport.service';
8
+ import {
9
+ LOG_LEVELS,
10
+ Logger,
11
+ LOGGER_NAME_META_KEY,
12
+ LOGGER_NAME_PROVIDER,
13
+ LoggerFactory,
14
+ OtelConfiguration,
15
+ } from './logger.model';
16
+
17
+ export function bindWinstonLogger(context: ResolutionContext): winston.Logger {
18
+ const transport = context.get(AzFunctionsTransport);
19
+ return winston.createLogger({
20
+ level: 'silly',
21
+ levels: LOG_LEVELS,
22
+ format: winston.format.combine(winston.format.timestamp(), winston.format.splat(), winston.format.metadata()),
23
+ transports: [transport],
24
+ });
25
+ }
26
+
27
+ export function bindLoggerFactory(context: ResolutionContext): LoggerFactory {
28
+ const logger = context.get(winston.Logger);
29
+ const loggerNameProvider = context.get(LOGGER_NAME_PROVIDER, { optional: true });
30
+ return (loggerName?: string): Logger => {
31
+ let derivedLoggerName = loggerName;
32
+ if (loggerName !== undefined) {
33
+ return logger.child({ loggerName });
34
+ }
35
+ if (loggerNameProvider !== undefined) {
36
+ const obj = {};
37
+ Error.captureStackTrace(obj);
38
+ const stack = (obj as { stack?: string }).stack;
39
+ const stackEntry = stack?.split('\n')[2];
40
+ derivedLoggerName = loggerNameProvider(stackEntry);
41
+ }
42
+ return logger.child({ [LOGGER_NAME_META_KEY]: derivedLoggerName ?? '' });
43
+ };
44
+ }
45
+
46
+ export function bindOtelLoggerProvider(otelConfiguration: OtelConfiguration): LoggerProvider {
47
+ const connectionString = otelConfiguration?.applicationInsightsConnectionString;
48
+ return new LoggerProvider({
49
+ resource: resourceFromAttributes({
50
+ [ATTR_SERVICE_NAME]: otelConfiguration?.serviceName,
51
+ [ATTR_SERVICE_INSTANCE_ID]: otelConfiguration?.serviceInstanceId,
52
+ [ATTR_SERVICE_VERSION]: otelConfiguration?.serviceVersion,
53
+ }),
54
+ processors: [new BatchLogRecordProcessor(new AzureMonitorLogExporter({ connectionString }))],
55
+ });
56
+ }
@@ -0,0 +1,26 @@
1
+ import { ContainerModule } from 'inversify';
2
+ import * as winston from 'winston';
3
+ import { bindLoggerFactory, bindOtelLoggerProvider, bindWinstonLogger } from './bindings';
4
+ import { LogLevelService } from './log-level.service';
5
+ import { AzFunctionsTransport } from './log-transport.service';
6
+ import { DEFAULT_LOG_LEVEL, LOGGER_FACTORY, LOGGER_PROVIDER, LoggerConfiguration } from './logger.model';
7
+ import { OtelLogger } from './otel.logger';
8
+
9
+ export * from './logger.model';
10
+ export * from './logger.utils';
11
+ export * from './trie-search.service';
12
+
13
+ export function provideLoggerModule(loggerConfiguration?: LoggerConfiguration): ContainerModule {
14
+ return new ContainerModule(options => {
15
+ options.bind(LogLevelService).toSelf();
16
+ options.bind(AzFunctionsTransport).toSelf();
17
+ options.bind(winston.Logger).toDynamicValue(context => bindWinstonLogger(context));
18
+ options.bind(LOGGER_FACTORY).toFactory(context => bindLoggerFactory(context));
19
+ options.bind(DEFAULT_LOG_LEVEL).toConstantValue(loggerConfiguration?.defaultLogLevel ?? 'info');
20
+ if (loggerConfiguration?.otelConfiguration !== undefined) {
21
+ const otelConfiguration = loggerConfiguration.otelConfiguration;
22
+ options.bind(OtelLogger).toSelf();
23
+ options.bind(LOGGER_PROVIDER).toDynamicValue(() => bindOtelLoggerProvider(otelConfiguration));
24
+ }
25
+ });
26
+ }
@@ -0,0 +1,14 @@
1
+ import { inject, injectable, optional } from 'inversify';
2
+ import { DEFAULT_LOG_LEVEL, LOG_LEVEL_PROVIDER, LogLevel, LogLevelProvider } from './logger.model';
3
+
4
+ @injectable()
5
+ export class LogLevelService {
6
+ constructor(
7
+ @inject(LOG_LEVEL_PROVIDER) @optional() private readonly logLevelsProvider: LogLevelProvider | undefined,
8
+ @inject(DEFAULT_LOG_LEVEL) private readonly defaultLogLevel: LogLevel,
9
+ ) {}
10
+
11
+ getLogLevel(loggerName: string | undefined): LogLevel {
12
+ return this.logLevelsProvider?.getLogLevel(loggerName) ?? this.defaultLogLevel;
13
+ }
14
+ }
@@ -0,0 +1,162 @@
1
+ import { InvocationContext } from '@azure/functions';
2
+ import { ORIGINAL_INVOCATION_CONTEXT_VALUE_KEY, PLATFORM_CONTEXT_MANAGER, PlatformContextManager } from 'context';
3
+ import { inject, injectable, optional } from 'inversify';
4
+ import * as Transport from 'winston-transport';
5
+ import { LogLevelService } from './log-level.service';
6
+ import {
7
+ CONTEXT_LOGGER_METADATA,
8
+ DEFAULT_LOG_LEVEL,
9
+ LOG_LEVELS,
10
+ LOGGER_NAME_META_KEY,
11
+ LogLevel,
12
+ PlatformLogInfo,
13
+ } from './logger.model';
14
+ import { sanitizeMetadata, SanitizerOptions } from './logger.utils';
15
+ import { OtelLogger } from './otel.logger';
16
+
17
+ function isLogLevel(level: string): level is LogLevel {
18
+ return level in LOG_LEVELS;
19
+ }
20
+ export type InvocationContextLogger = Pick<InvocationContext, 'log' | 'trace' | 'debug' | 'info' | 'warn' | 'error'>;
21
+
22
+ export const LOG_METHOD_MAP: Record<LogLevel, keyof InvocationContextLogger> = {
23
+ error: 'error',
24
+ warn: 'warn',
25
+ info: 'info',
26
+ http: 'info',
27
+ verbose: 'info',
28
+ debug: 'debug',
29
+ silly: 'trace',
30
+ };
31
+
32
+ const SANITIZER_OPTIONS: Partial<Record<LogLevel, SanitizerOptions>> = {
33
+ error: {
34
+ maxDepth: Number.MAX_VALUE,
35
+ maxArrayLength: Number.MAX_VALUE,
36
+ maxKeysCount: Number.MAX_VALUE,
37
+ maxStringLength: Number.MAX_VALUE,
38
+ },
39
+ warn: { maxDepth: 10 },
40
+ http: { maxDepth: 5, maxArrayLength: 10 },
41
+ verbose: { maxDepth: 10 },
42
+ debug: { maxDepth: 20, maxArrayLength: 25, maxKeysCount: 25, maxStringLength: 1000 },
43
+ silly: {
44
+ maxDepth: Number.MAX_VALUE,
45
+ maxArrayLength: Number.MAX_VALUE,
46
+ maxKeysCount: Number.MAX_VALUE,
47
+ maxStringLength: Number.MAX_VALUE,
48
+ },
49
+ };
50
+
51
+ interface LogMetadata {
52
+ timestamp: string;
53
+ [LOGGER_NAME_META_KEY]?: string;
54
+ message?: string;
55
+ stack?: string;
56
+ cause?: unknown;
57
+ details?: unknown;
58
+ name?: string;
59
+ }
60
+
61
+ interface LogInfo {
62
+ level: LogLevel;
63
+ message: string;
64
+ metadata: LogMetadata;
65
+ }
66
+
67
+ @injectable()
68
+ export class AzFunctionsTransport extends Transport {
69
+ constructor(
70
+ @inject(PLATFORM_CONTEXT_MANAGER)
71
+ private readonly platformContextManager: PlatformContextManager,
72
+ @inject(DEFAULT_LOG_LEVEL)
73
+ private readonly defaultLogLevel: LogLevel,
74
+ @inject(OtelLogger)
75
+ @optional()
76
+ private readonly logger: OtelLogger | undefined,
77
+ private readonly logLevelsService: LogLevelService,
78
+ ) {
79
+ super();
80
+ }
81
+
82
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
+ log(info: any, next: () => void): any {
84
+ setImmediate(() => {
85
+ this.emit('logged', info);
86
+ });
87
+ const {
88
+ level,
89
+ metadata: { loggerName },
90
+ } = info;
91
+ const currentLogLevel = isLogLevel(level) ? level : this.defaultLogLevel;
92
+ const availableLogLevel = this.logLevelsService.getLogLevel(loggerName);
93
+
94
+ if (LOG_LEVELS[currentLogLevel] <= LOG_LEVELS[availableLogLevel]) {
95
+ this.logInternal({
96
+ level: currentLogLevel,
97
+ message: info.message,
98
+ metadata: info.metadata,
99
+ });
100
+ }
101
+ next();
102
+ }
103
+
104
+ private logInternal<T extends LogInfo>(info: T): void {
105
+ const platformContext = this.platformContextManager.active();
106
+ const invocationContext = platformContext?.invocationContext;
107
+ const platformLogInfo = this.getPlatformLogInfo(info, invocationContext);
108
+ if (this.logger !== undefined) {
109
+ this.logger.log(platformLogInfo);
110
+ } else {
111
+ const fallbackLogger: InvocationContextLogger =
112
+ platformContext?.getValue<InvocationContext>(ORIGINAL_INVOCATION_CONTEXT_VALUE_KEY) ?? console;
113
+ const logMethod = LOG_METHOD_MAP[info.level];
114
+ if (platformLogInfo.metadata !== undefined) {
115
+ fallbackLogger[logMethod](platformLogInfo.message, platformLogInfo.metadata);
116
+ } else {
117
+ fallbackLogger[logMethod](platformLogInfo.message);
118
+ }
119
+ }
120
+ }
121
+
122
+ private getPlatformLogInfo<T extends LogInfo>(logInfo: T, invocationContext?: InvocationContext): PlatformLogInfo {
123
+ const {
124
+ level,
125
+ message,
126
+ metadata: { timestamp, loggerName, ...rest },
127
+ } = logInfo;
128
+ const metadata = this.getContextMetadata(level);
129
+ Object.assign(metadata, rest);
130
+ const extension =
131
+ Object.keys(metadata).length > 0
132
+ ? { metadata: sanitizeMetadata(metadata, SANITIZER_OPTIONS[logInfo.level]) }
133
+ : {};
134
+ return {
135
+ level,
136
+ timestamp: new Date(timestamp),
137
+ message,
138
+ loggerName: loggerName ?? 'unknown',
139
+ invocationId: invocationContext?.invocationId,
140
+ traceContext: invocationContext?.traceContext,
141
+ operationName: invocationContext?.functionName,
142
+ ...extension,
143
+ };
144
+ }
145
+
146
+ private getContextMetadata(level: LogLevel): object {
147
+ const contextLoggerMetadata = this.platformContextManager.active()?.getValue(CONTEXT_LOGGER_METADATA);
148
+ let metadata: object = {};
149
+ if (contextLoggerMetadata !== undefined) {
150
+ let distance = Number.MAX_VALUE;
151
+ for (const metaLevel of Object.keys(contextLoggerMetadata)) {
152
+ const typedMetaLevel = metaLevel as LogLevel;
153
+ const newDistance = LOG_LEVELS[level] - LOG_LEVELS[typedMetaLevel];
154
+ if (newDistance >= 0 && newDistance < distance) {
155
+ distance = newDistance;
156
+ metadata = contextLoggerMetadata[typedMetaLevel]!;
157
+ }
158
+ }
159
+ }
160
+ return metadata;
161
+ }
162
+ }
@@ -0,0 +1,261 @@
1
+ import { TraceContext } from '@azure/functions';
2
+ import { AnyValueMap } from '@opentelemetry/api-logs';
3
+ import { LoggerProvider } from '@opentelemetry/sdk-logs';
4
+ import { createPlatformContextValueKey } from 'context';
5
+ import { serviceIdentifier } from 'shared';
6
+ import * as winston from 'winston';
7
+
8
+ /**
9
+ * Log levels for the logger.
10
+ */
11
+ export const LOG_LEVELS = {
12
+ error: 0,
13
+ warn: 1,
14
+ info: 2,
15
+ http: 3,
16
+ verbose: 4,
17
+ debug: 5,
18
+ silly: 6,
19
+ } as const;
20
+
21
+ export const LOGGER_NAME_META_KEY = 'loggerName';
22
+
23
+ export type ContextLoggerMetadata = Partial<Record<LogLevel, object>>;
24
+ export const CONTEXT_LOGGER_METADATA = createPlatformContextValueKey<ContextLoggerMetadata>(
25
+ 'AzFunctionsContext.Logger.Metadata',
26
+ );
27
+
28
+ /**
29
+ * Log levels for the logger.
30
+ *
31
+ * @see LOG_LEVELS
32
+ */
33
+ export type LogLevel = keyof typeof LOG_LEVELS;
34
+
35
+ /**
36
+ * IoC container identifier for the default log level used by the logger.
37
+ */
38
+ export const DEFAULT_LOG_LEVEL = serviceIdentifier<LogLevel>('AzFunctions.DefaultLogLevel');
39
+
40
+ /**
41
+ * A logger interface that provides logging methods for different log levels.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * @Injectable()
46
+ * class MyService {
47
+ * private readonly logger: Logger;
48
+ *
49
+ * constructor(@Inject(LOGGER_FACTORY) loggerFactory: LoggerFactory) {
50
+ * this.logger = loggerFactory('MyService');
51
+ * }
52
+ *
53
+ * doSomething() {
54
+ * this.logger.info('Doing something...');
55
+ * }
56
+ * }
57
+ * ```
58
+ */
59
+ export type Logger = Pick<winston.Logger, LogLevel>;
60
+
61
+ /**
62
+ * A prefix for all system loggers used by the AzFunctions platform. This prefix is used to identify loggers that are part of the platform's internal logging system.
63
+ */
64
+ export const SYSTEM_LOGGER_NAME_PREFIX = '#az-functions';
65
+ export const LOGGER_PROVIDER = serviceIdentifier<LoggerProvider>('AzFunctions.LoggerProvider');
66
+
67
+ /**
68
+ * An IoC container identifier for a service that provides log levels for loggers.
69
+ *
70
+ * This service can be used to determine the log level for a specific logger based on its name.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * @Injectable()
75
+ * class MyLogLevelProvider implements LogLevelProvider {
76
+ * getLogLevel(loggerName?: string): LogLevel | undefined {
77
+ * if (loggerName?.startsWith('MyService')) {
78
+ * return 'debug';
79
+ * }
80
+ * return undefined;
81
+ * }
82
+ * }
83
+ * ...
84
+ * export const LoggerModule = new ContainerModule(({ bind }) => {
85
+ * ...
86
+ * bind(LOG_LEVEL_PROVIDER).to(MyLogLevelProvider);
87
+ * ...
88
+ * });
89
+ * ...
90
+ * startPlatform({
91
+ * ...
92
+ * modules: [
93
+ * ...
94
+ * LoggerModule,
95
+ * ...
96
+ * ],
97
+ * });
98
+ * ```
99
+ */
100
+ export const LOG_LEVEL_PROVIDER = serviceIdentifier<LogLevelProvider>('AzFunctions.LogLevelProvider');
101
+
102
+ /**
103
+ * An identifier for a logger factory function that creates a logger instance.
104
+ *
105
+ * @param loggerName - The name of the logger. If not provided, the logger name will be derived from the call stack.
106
+ * @returns A logger instance.
107
+ *
108
+ * @example
109
+ * ```ts
110
+ * @Injectable()
111
+ * class MyService {
112
+ * private readonly logger: Logger;
113
+ *
114
+ * constructor(@Inject(LOGGER_FACTORY) loggerFactory: LoggerFactory) {
115
+ * this.logger = loggerFactory('MyService');
116
+ * }
117
+ *
118
+ * doSomething() {
119
+ * this.logger.info('Doing something...');
120
+ * }
121
+ * }
122
+ * ```
123
+ */
124
+ export const LOGGER_FACTORY = serviceIdentifier<LoggerFactory>('AzFunctions.LoggerFactory');
125
+
126
+ /**
127
+ * A factory function that creates a logger instance.
128
+ *
129
+ * @param loggerName - The name of the logger. If not provided, the logger name will be derived from the call stack.
130
+ * @returns A logger instance.
131
+ */
132
+ export type LoggerFactory = (loggerName?: string) => Logger;
133
+
134
+ /**
135
+ * A IoC container identifier for a function that provides a logger name based on the call stack.
136
+
137
+ @example
138
+ ```ts
139
+ export const LoggerModule = new ContainerModule(({ bind }) => {
140
+ ...
141
+ bind(LOGGER_NAME_PROVIDER).toFactory(() => {
142
+ const regexp =
143
+ /^\s*at\s+(?:new\s+)?([A-Za-z0-9_$]+)\s+\(.*packages[\\/]examples[\\/]backend[\\/]src[\\/](.+)\/[^\\/]+:\d+:\d+\)$/;
144
+ return (stackEntry?: string) => {
145
+ const stackLines = stackEntry?.split('\n') ?? [];
146
+ let callerLine = stackLines.shift();
147
+ while (callerLine !== undefined) {
148
+ const match = regexp.exec(callerLine.trim());
149
+ if (match !== null) {
150
+ return `${LOGGER_NAME_PREFIX}.${match[2]?.replace(/\//g, '.')}.${match[1]}`;
151
+ } else {
152
+ callerLine = stackLines.shift();
153
+ }
154
+ }
155
+ };
156
+ ...
157
+ });
158
+ ...
159
+
160
+ startPlatform({
161
+ ...
162
+ modules: [
163
+ ...
164
+ LoggerModule,
165
+ ...
166
+ ],
167
+ });
168
+ });
169
+ ```
170
+ */
171
+ export const LOGGER_NAME_PROVIDER = serviceIdentifier<LoggerNameProvider>('AzFunctions.LoggerNameProvider');
172
+
173
+ /**
174
+ * A function that provides a logger name based on the call stack.
175
+ *
176
+ * @param stackEntry - An optional stack entry from which to derive the logger name.
177
+ * @returns A logger name or undefined if it cannot be derived.
178
+ */
179
+ export type LoggerNameProvider = (stackEntry?: string) => string | undefined;
180
+
181
+ /**
182
+ * An interface for a service that provides log levels for loggers.
183
+ *
184
+ * This service can be used to determine the log level for a specific logger based on its name.
185
+ *
186
+ * @example
187
+ * ```ts
188
+ * @Injectable()
189
+ * class MyLogLevelProvider implements LogLevelProvider {
190
+ * getLogLevel(loggerName?: string): LogLevel | undefined {
191
+ * if (loggerName?.startsWith('MyService')) {
192
+ * return 'debug';
193
+ * }
194
+ * return undefined;
195
+ * }
196
+ * }
197
+ * ```
198
+ */
199
+ export interface LogLevelProvider {
200
+ /**
201
+ * Gets the log level for a specific logger based on its name.
202
+ *
203
+ * @param loggerName - The name of the logger for which to get the log level.
204
+ * @returns The log level for the specified logger, or undefined if no specific log level is set and default log level should be used.
205
+ */
206
+ getLogLevel(loggerName?: string): LogLevel | undefined;
207
+ }
208
+
209
+ /**
210
+ * Configuration options for OpenTelemetry (Otel) logging.
211
+ *
212
+ * This interface defines the configuration options required to set up OpenTelemetry logging in an application.
213
+ * It includes the connection string for Application Insights, as well as optional service metadata such as name, instance ID, and version.
214
+ *
215
+ * @param applicationInsightsConnectionString - The connection string for Application Insights, used to send telemetry data.
216
+ * @param serviceName - (Optional) The name of the service being monitored. This is used to identify the service in telemetry data.
217
+ * @param serviceInstanceId - (Optional) A unique identifier for the specific instance of the service. This can be used to differentiate between multiple instances of the same service.
218
+ * @param serviceVersion - (Optional) The version of the service being monitored. This can be used to track changes and updates to the service over time.
219
+ *
220
+ * @example
221
+ * ```ts
222
+ * const otelConfiguration: OtelConfiguration | undefined =
223
+ * process.env.APPLICATIONINSIGHTS_CONNECTION_STRING !== undefined
224
+ * ? {
225
+ * applicationInsightsConnectionString: process.env.APPLICATIONINSIGHTS_CONNECTION_STRING,
226
+ * serviceName: process.env.WEBSITE_DEPLOYMENT_ID,
227
+ * serviceVersion: '1.0.0',
228
+ * serviceInstanceId: process.env.WEBSITE_INSTANCE_ID,
229
+ * }
230
+ * : undefined;
231
+ * ...
232
+ * startPlatform({
233
+ * ...
234
+ * loggerConfiguration: {
235
+ * otelConfiguration,
236
+ * },
237
+ * });
238
+ * ```
239
+ */
240
+ export interface OtelConfiguration {
241
+ applicationInsightsConnectionString: string;
242
+ serviceName?: string;
243
+ serviceInstanceId?: string;
244
+ serviceVersion?: string;
245
+ }
246
+
247
+ export interface LoggerConfiguration {
248
+ defaultLogLevel?: LogLevel;
249
+ otelConfiguration?: OtelConfiguration;
250
+ }
251
+
252
+ export interface PlatformLogInfo {
253
+ level: LogLevel;
254
+ timestamp: Date;
255
+ message: string;
256
+ invocationId?: string;
257
+ traceContext?: TraceContext;
258
+ operationName?: string;
259
+ loggerName: string;
260
+ metadata?: AnyValueMap;
261
+ }