@drunk-pulumi/azure 0.0.19

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 (386) hide show
  1. package/Aks/Helper.d.ts +43 -0
  2. package/Aks/Helper.js +72 -0
  3. package/Aks/Identity.d.ts +14 -0
  4. package/Aks/Identity.js +32 -0
  5. package/Aks/VmSetAutoScale/index.d.ts +16 -0
  6. package/Aks/VmSetAutoScale/index.js +132 -0
  7. package/Aks/VmSetMonitor/index.d.ts +12 -0
  8. package/Aks/VmSetMonitor/index.js +67 -0
  9. package/Aks/index.d.ts +100 -0
  10. package/Aks/index.js +558 -0
  11. package/Apim/ApiProduct/Api.d.ts +35 -0
  12. package/Apim/ApiProduct/Api.js +131 -0
  13. package/Apim/ApiProduct/OpenApi.d.ts +85 -0
  14. package/Apim/ApiProduct/OpenApi.js +3 -0
  15. package/Apim/ApiProduct/PolicyBuilder.d.ts +79 -0
  16. package/Apim/ApiProduct/PolicyBuilder.js +361 -0
  17. package/Apim/ApiProduct/Product.d.ts +8 -0
  18. package/Apim/ApiProduct/Product.js +63 -0
  19. package/Apim/ApiProduct/SwaggerHelper.d.ts +6 -0
  20. package/Apim/ApiProduct/SwaggerHelper.js +44 -0
  21. package/Apim/ApiProduct/index.d.ts +9 -0
  22. package/Apim/ApiProduct/index.js +22 -0
  23. package/Apim/Helpers.d.ts +0 -0
  24. package/Apim/Helpers.js +2 -0
  25. package/Apim/HookProxy/index.d.ts +20 -0
  26. package/Apim/HookProxy/index.js +27 -0
  27. package/Apim/index.d.ts +22 -0
  28. package/Apim/index.js +118 -0
  29. package/Apps/LogicApp.d.ts +12 -0
  30. package/Apps/LogicApp.js +19 -0
  31. package/Automation/AutoAccount.d.ts +5 -0
  32. package/Automation/AutoAccount.js +20 -0
  33. package/AzAd/B2C.d.ts +9 -0
  34. package/AzAd/B2C.js +38 -0
  35. package/AzAd/ConditionalPolicies/index.d.ts +0 -0
  36. package/AzAd/ConditionalPolicies/index.js +2 -0
  37. package/AzAd/EnvRoles.d.ts +12 -0
  38. package/AzAd/EnvRoles.js +62 -0
  39. package/AzAd/GraphDefinition.d.ts +14 -0
  40. package/AzAd/GraphDefinition.js +5136 -0
  41. package/AzAd/Group.d.ts +29 -0
  42. package/AzAd/Group.js +70 -0
  43. package/AzAd/Helper.d.ts +18 -0
  44. package/AzAd/Helper.js +37 -0
  45. package/AzAd/Identities/AzDevOps.d.ts +23 -0
  46. package/AzAd/Identities/AzDevOps.js +61 -0
  47. package/AzAd/Identities/AzUserAdRevertSync.d.ts +14 -0
  48. package/AzAd/Identities/AzUserAdRevertSync.js +18 -0
  49. package/AzAd/Identity.d.ts +51 -0
  50. package/AzAd/Identity.js +133 -0
  51. package/AzAd/ManagedIdentity.d.ts +6 -0
  52. package/AzAd/ManagedIdentity.js +23 -0
  53. package/AzAd/Role.d.ts +19 -0
  54. package/AzAd/Role.js +25 -0
  55. package/AzAd/RoleAssignment.d.ts +79 -0
  56. package/AzAd/RoleAssignment.js +48 -0
  57. package/AzAd/RolesBuiltIn.d.ts +62 -0
  58. package/AzAd/RolesBuiltIn.js +13841 -0
  59. package/Cdn/index.d.ts +11 -0
  60. package/Cdn/index.js +47 -0
  61. package/Certificate/index.d.ts +41 -0
  62. package/Certificate/index.js +156 -0
  63. package/Certificate/p12.d.ts +5 -0
  64. package/Certificate/p12.js +37 -0
  65. package/Common/AppConfigs/dotnetConfig.d.ts +15 -0
  66. package/Common/AppConfigs/dotnetConfig.js +20 -0
  67. package/Common/AutoTags.d.ts +1 -0
  68. package/Common/AutoTags.js +24 -0
  69. package/Common/AzureEnv.d.ts +37 -0
  70. package/Common/AzureEnv.js +94 -0
  71. package/Common/ConfigHelper.d.ts +5 -0
  72. package/Common/ConfigHelper.js +14 -0
  73. package/Common/GlobalEnv.d.ts +14 -0
  74. package/Common/GlobalEnv.js +38 -0
  75. package/Common/Helpers.d.ts +10 -0
  76. package/Common/Helpers.js +30 -0
  77. package/Common/Location.d.ts +4 -0
  78. package/Common/Location.js +23 -0
  79. package/Common/LocationBuiltIn.d.ts +81 -0
  80. package/Common/LocationBuiltIn.js +1925 -0
  81. package/Common/Naming/index.d.ts +62 -0
  82. package/Common/Naming/index.js +146 -0
  83. package/Common/ResourceEnv.d.ts +16 -0
  84. package/Common/ResourceEnv.js +29 -0
  85. package/Common/StackEnv.d.ts +4 -0
  86. package/Common/StackEnv.js +22 -0
  87. package/Common/index.d.ts +5 -0
  88. package/Common/index.js +9 -0
  89. package/ContainerRegistry/Helper.d.ts +23 -0
  90. package/ContainerRegistry/Helper.js +47 -0
  91. package/ContainerRegistry/index.d.ts +28 -0
  92. package/ContainerRegistry/index.js +103 -0
  93. package/Core/Helper.d.ts +16 -0
  94. package/Core/Helper.js +37 -0
  95. package/Core/KeyGenetators.d.ts +33 -0
  96. package/Core/KeyGenetators.js +66 -0
  97. package/Core/Locker.d.ts +13 -0
  98. package/Core/Locker.js +14 -0
  99. package/Core/Random.d.ts +40 -0
  100. package/Core/Random.js +83 -0
  101. package/Core/ResourceCreator.d.ts +17 -0
  102. package/Core/ResourceCreator.js +48 -0
  103. package/Core/ResourceGroup.d.ts +13 -0
  104. package/Core/ResourceGroup.js +45 -0
  105. package/CosmosDb/index.d.ts +33 -0
  106. package/CosmosDb/index.js +129 -0
  107. package/CustomRoles/index.d.ts +5 -0
  108. package/CustomRoles/index.js +27 -0
  109. package/IOT/Hub/index.d.ts +32 -0
  110. package/IOT/Hub/index.js +208 -0
  111. package/KeyVault/CustomHelper.d.ts +35 -0
  112. package/KeyVault/CustomHelper.js +40 -0
  113. package/KeyVault/Helper.d.ts +33 -0
  114. package/KeyVault/Helper.js +58 -0
  115. package/KeyVault/VaultAccess.d.ts +15 -0
  116. package/KeyVault/VaultAccess.js +47 -0
  117. package/KeyVault/VaultPermissions.d.ts +26 -0
  118. package/KeyVault/VaultPermissions.js +169 -0
  119. package/KeyVault/index.d.ts +28 -0
  120. package/KeyVault/index.js +136 -0
  121. package/KubeX/AcrSecret.d.ts +15 -0
  122. package/KubeX/AcrSecret.js +31 -0
  123. package/KubeX/Apps/AstroPage.d.ts +12 -0
  124. package/KubeX/Apps/AstroPage.js +33 -0
  125. package/KubeX/Apps/KafKa.d.ts +6 -0
  126. package/KubeX/Apps/KafKa.js +13 -0
  127. package/KubeX/Apps/Nobelium.d.ts +13 -0
  128. package/KubeX/Apps/Nobelium.js +37 -0
  129. package/KubeX/Apps/Wikijs.d.ts +30 -0
  130. package/KubeX/Apps/Wikijs.js +54 -0
  131. package/KubeX/Apps/WordPress.d.ts +24 -0
  132. package/KubeX/Apps/WordPress.js +55 -0
  133. package/KubeX/Apps/YarpProxy/index.d.ts +17 -0
  134. package/KubeX/Apps/YarpProxy/index.js +107 -0
  135. package/KubeX/Apps/YarpProxy/type.d.ts +55 -0
  136. package/KubeX/Apps/YarpProxy/type.js +3 -0
  137. package/KubeX/CertHelper.d.ts +1 -0
  138. package/KubeX/CertHelper.js +9 -0
  139. package/KubeX/CertImports.d.ts +19 -0
  140. package/KubeX/CertImports.js +70 -0
  141. package/KubeX/CloudFlare/CertCreator.d.ts +19 -0
  142. package/KubeX/CloudFlare/CertCreator.js +90 -0
  143. package/KubeX/CloudFlare/CertImports.d.ts +17 -0
  144. package/KubeX/CloudFlare/CertImports.js +34 -0
  145. package/KubeX/CloudFlare/DynamicDns.d.ts +21 -0
  146. package/KubeX/CloudFlare/DynamicDns.js +39 -0
  147. package/KubeX/CloudFlare/Tunnel-Helm.d.ts +17 -0
  148. package/KubeX/CloudFlare/Tunnel-Helm.js +12 -0
  149. package/KubeX/CloudFlare/Tunnel.d.ts +23 -0
  150. package/KubeX/CloudFlare/Tunnel.js +54 -0
  151. package/KubeX/CloudFlare/index.d.ts +13 -0
  152. package/KubeX/CloudFlare/index.js +36 -0
  153. package/KubeX/Clusters/K3s/AutoUpgradeController/index.d.ts +6 -0
  154. package/KubeX/Clusters/K3s/AutoUpgradeController/index.js +60 -0
  155. package/KubeX/ConfigSecret.d.ts +24 -0
  156. package/KubeX/ConfigSecret.js +38 -0
  157. package/KubeX/Core/CertManager/index.d.ts +24 -0
  158. package/KubeX/Core/CertManager/index.js +96 -0
  159. package/KubeX/Core/KsCertSecret.d.ts +12 -0
  160. package/KubeX/Core/KsCertSecret.js +22 -0
  161. package/KubeX/Core/KsSecret.d.ts +9 -0
  162. package/KubeX/Core/KsSecret.js +12 -0
  163. package/KubeX/Core/LoadBalancer/MetalLB.d.ts +7 -0
  164. package/KubeX/Core/LoadBalancer/MetalLB.js +21 -0
  165. package/KubeX/Core/Monitoring/index.d.ts +22 -0
  166. package/KubeX/Core/Monitoring/index.js +322 -0
  167. package/KubeX/Core/Namespace.d.ts +12 -0
  168. package/KubeX/Core/Namespace.js +41 -0
  169. package/KubeX/Core/Nginx/index.d.ts +60 -0
  170. package/KubeX/Core/Nginx/index.js +109 -0
  171. package/KubeX/Core/OAuthProxy/index.d.ts +0 -0
  172. package/KubeX/Core/OAuthProxy/index.js +3 -0
  173. package/KubeX/Core/ResourceQuota.d.ts +12 -0
  174. package/KubeX/Core/ResourceQuota.js +13 -0
  175. package/KubeX/Core/SecurityRules.d.ts +34 -0
  176. package/KubeX/Core/SecurityRules.js +93 -0
  177. package/KubeX/Core/StorageClass/azureBlob.d.ts +20 -0
  178. package/KubeX/Core/StorageClass/azureBlob.js +77 -0
  179. package/KubeX/Core/StorageClass/azureFile.d.ts +17 -0
  180. package/KubeX/Core/StorageClass/azureFile.js +45 -0
  181. package/KubeX/Core/StorageClass/index.d.ts +13 -0
  182. package/KubeX/Core/StorageClass/index.js +25 -0
  183. package/KubeX/Core/index.d.ts +57 -0
  184. package/KubeX/Core/index.js +94 -0
  185. package/KubeX/Databases/MariaDb.d.ts +11 -0
  186. package/KubeX/Databases/MariaDb.js +39 -0
  187. package/KubeX/Databases/MySql.V2.d.ts +11 -0
  188. package/KubeX/Databases/MySql.V2.js +40 -0
  189. package/KubeX/Databases/MySql.d.ts +13 -0
  190. package/KubeX/Databases/MySql.js +55 -0
  191. package/KubeX/Databases/PostgreSql/PostgreSQL-HA.d.ts +10 -0
  192. package/KubeX/Databases/PostgreSql/PostgreSQL-HA.js +47 -0
  193. package/KubeX/Databases/PostgreSql/PostgreSQL.d.ts +10 -0
  194. package/KubeX/Databases/PostgreSql/PostgreSQL.js +51 -0
  195. package/KubeX/Databases/PostgreSql/PostgreSql.v1.d.ts +13 -0
  196. package/KubeX/Databases/PostgreSql/PostgreSql.v1.js +56 -0
  197. package/KubeX/Databases/PostgreSql/index.d.ts +17 -0
  198. package/KubeX/Databases/PostgreSql/index.js +6 -0
  199. package/KubeX/Databases/RedisCache.d.ts +14 -0
  200. package/KubeX/Databases/RedisCache.js +65 -0
  201. package/KubeX/Databases/SqlServer.d.ts +15 -0
  202. package/KubeX/Databases/SqlServer.js +77 -0
  203. package/KubeX/Deployment/PodAutoscaler.d.ts +14 -0
  204. package/KubeX/Deployment/PodAutoscaler.js +51 -0
  205. package/KubeX/Deployment/index.d.ts +136 -0
  206. package/KubeX/Deployment/index.js +306 -0
  207. package/KubeX/Helpers.d.ts +4 -0
  208. package/KubeX/Helpers.js +17 -0
  209. package/KubeX/Ingress/AppGatewayIngress.d.ts +2 -0
  210. package/KubeX/Ingress/AppGatewayIngress.js +4 -0
  211. package/KubeX/Ingress/Conts.d.ts +13 -0
  212. package/KubeX/Ingress/Conts.js +18 -0
  213. package/KubeX/Ingress/NginxIngress.d.ts +3 -0
  214. package/KubeX/Ingress/NginxIngress.js +186 -0
  215. package/KubeX/Ingress/NginxProxy.d.ts +21 -0
  216. package/KubeX/Ingress/NginxProxy.js +43 -0
  217. package/KubeX/Ingress/TraefikIngress/CustomHeader.d.ts +15 -0
  218. package/KubeX/Ingress/TraefikIngress/CustomHeader.js +15 -0
  219. package/KubeX/Ingress/TraefikIngress/index.d.ts +11 -0
  220. package/KubeX/Ingress/TraefikIngress/index.js +95 -0
  221. package/KubeX/Ingress/index.d.ts +5 -0
  222. package/KubeX/Ingress/index.js +12 -0
  223. package/KubeX/Ingress/type.d.ts +82 -0
  224. package/KubeX/Ingress/type.js +3 -0
  225. package/KubeX/Providers/index.d.ts +8 -0
  226. package/KubeX/Providers/index.js +15 -0
  227. package/KubeX/Storage/Longhorn/index.d.ts +15 -0
  228. package/KubeX/Storage/Longhorn/index.js +54 -0
  229. package/KubeX/Storage/index.d.ts +25 -0
  230. package/KubeX/Storage/index.js +79 -0
  231. package/KubeX/Tools/AWS/LocalStack.d.ts +7 -0
  232. package/KubeX/Tools/AWS/LocalStack.js +29 -0
  233. package/KubeX/Tools/AWS/S3.d.ts +6 -0
  234. package/KubeX/Tools/AWS/S3.js +44 -0
  235. package/KubeX/Tools/AWS/index.d.ts +7 -0
  236. package/KubeX/Tools/AWS/index.js +14 -0
  237. package/KubeX/Tools/AppHealthzMonitor.d.ts +18 -0
  238. package/KubeX/Tools/AppHealthzMonitor.js +52 -0
  239. package/KubeX/Tools/ArgoCD/index.d.ts +17 -0
  240. package/KubeX/Tools/ArgoCD/index.js +131 -0
  241. package/KubeX/Tools/Dapr/Storage.d.ts +66 -0
  242. package/KubeX/Tools/Dapr/Storage.js +70 -0
  243. package/KubeX/Tools/Dapr/index.d.ts +10 -0
  244. package/KubeX/Tools/Dapr/index.js +31 -0
  245. package/KubeX/Tools/Echo-App.d.ts +3 -0
  246. package/KubeX/Tools/Echo-App.js +21 -0
  247. package/KubeX/Tools/Gitea/GiteaRepo.d.ts +72 -0
  248. package/KubeX/Tools/Gitea/GiteaRepo.js +184 -0
  249. package/KubeX/Tools/Gitea/GiteaRunner.d.ts +11 -0
  250. package/KubeX/Tools/Gitea/GiteaRunner.js +37 -0
  251. package/KubeX/Tools/Gitea/GiteaRunner.v1.d.ts +11 -0
  252. package/KubeX/Tools/Gitea/GiteaRunner.v1.js +123 -0
  253. package/KubeX/Tools/HarborRepo.d.ts +29 -0
  254. package/KubeX/Tools/HarborRepo.js +78 -0
  255. package/KubeX/Tools/HelloWorld.d.ts +3 -0
  256. package/KubeX/Tools/HelloWorld.js +21 -0
  257. package/KubeX/Tools/KubeCleanup.d.ts +9 -0
  258. package/KubeX/Tools/KubeCleanup.js +34 -0
  259. package/KubeX/Tools/NoIp.d.ts +13 -0
  260. package/KubeX/Tools/NoIp.js +24 -0
  261. package/KubeX/Tools/OpenLDAP/index.d.ts +12 -0
  262. package/KubeX/Tools/OpenLDAP/index.js +56 -0
  263. package/KubeX/Tools/OutlineVpn/index.d.ts +25 -0
  264. package/KubeX/Tools/OutlineVpn/index.js +256 -0
  265. package/KubeX/Tools/SqlPad.d.ts +29 -0
  266. package/KubeX/Tools/SqlPad.js +133 -0
  267. package/KubeX/Tools/ToolPod.d.ts +10 -0
  268. package/KubeX/Tools/ToolPod.js +40 -0
  269. package/KubeX/Tools/UptimeKuma.d.ts +6 -0
  270. package/KubeX/Tools/UptimeKuma.js +38 -0
  271. package/KubeX/Tools/index.d.ts +27 -0
  272. package/KubeX/Tools/index.js +35 -0
  273. package/KubeX/VairableResolvers/index.d.ts +15 -0
  274. package/KubeX/VairableResolvers/index.js +49 -0
  275. package/KubeX/kx/index.d.ts +114 -0
  276. package/KubeX/kx/index.js +423 -0
  277. package/KubeX/types.d.ts +49 -0
  278. package/KubeX/types.js +3 -0
  279. package/Logs/AppInsight.d.ts +16 -0
  280. package/Logs/AppInsight.js +48 -0
  281. package/Logs/Helpers.d.ts +50 -0
  282. package/Logs/Helpers.js +95 -0
  283. package/Logs/LogAnalytics.d.ts +17 -0
  284. package/Logs/LogAnalytics.js +54 -0
  285. package/Logs/WebTest.d.ts +13 -0
  286. package/Logs/WebTest.js +68 -0
  287. package/Logs/index.d.ts +42 -0
  288. package/Logs/index.js +69 -0
  289. package/MySql/index.d.ts +20 -0
  290. package/MySql/index.js +93 -0
  291. package/Postgresql/index.d.ts +20 -0
  292. package/Postgresql/index.js +93 -0
  293. package/ReadMe.md +36 -0
  294. package/RedisCache/index.d.ts +9 -0
  295. package/RedisCache/index.js +79 -0
  296. package/ServiceBus/ServiceBusHelper.d.ts +21 -0
  297. package/ServiceBus/ServiceBusHelper.js +35 -0
  298. package/ServiceBus/index.d.ts +98 -0
  299. package/ServiceBus/index.js +396 -0
  300. package/SignalR/index.d.ts +20 -0
  301. package/SignalR/index.js +114 -0
  302. package/Sql/Auditing.d.ts +0 -0
  303. package/Sql/Auditing.js +2 -0
  304. package/Sql/Helper.d.ts +9 -0
  305. package/Sql/Helper.js +11 -0
  306. package/Sql/SqlDb.d.ts +14 -0
  307. package/Sql/SqlDb.js +42 -0
  308. package/Sql/index.d.ts +44 -0
  309. package/Sql/index.js +236 -0
  310. package/Storage/CdnEndpoint.d.ts +12 -0
  311. package/Storage/CdnEndpoint.js +62 -0
  312. package/Storage/CdnRules.d.ts +6 -0
  313. package/Storage/CdnRules.js +134 -0
  314. package/Storage/Helper.d.ts +28 -0
  315. package/Storage/Helper.js +66 -0
  316. package/Storage/ManagementRules.d.ts +70 -0
  317. package/Storage/ManagementRules.js +32 -0
  318. package/Storage/index.d.ts +55 -0
  319. package/Storage/index.js +264 -0
  320. package/VM/index.d.ts +37 -0
  321. package/VM/index.js +138 -0
  322. package/VNet/Bastion.d.ts +8 -0
  323. package/VNet/Bastion.js +30 -0
  324. package/VNet/Firewall.d.ts +27 -0
  325. package/VNet/Firewall.js +87 -0
  326. package/VNet/FirewallPolicies/AksFirewallPolicy.d.ts +20 -0
  327. package/VNet/FirewallPolicies/AksFirewallPolicy.js +241 -0
  328. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.d.ts +14 -0
  329. package/VNet/FirewallPolicies/CloudPCFirewallPolicy.js +303 -0
  330. package/VNet/FirewallPolicy.d.ts +28 -0
  331. package/VNet/FirewallPolicy.js +110 -0
  332. package/VNet/FirewallRules/AksFirewallRules.d.ts +24 -0
  333. package/VNet/FirewallRules/AksFirewallRules.js +250 -0
  334. package/VNet/FirewallRules/DefaultRules.d.ts +2 -0
  335. package/VNet/FirewallRules/DefaultRules.js +23 -0
  336. package/VNet/FirewallRules/types.d.ts +20 -0
  337. package/VNet/FirewallRules/types.js +5 -0
  338. package/VNet/GlobalNetworkPeering.d.ts +9 -0
  339. package/VNet/GlobalNetworkPeering.js +17 -0
  340. package/VNet/Helper.d.ts +33 -0
  341. package/VNet/Helper.js +86 -0
  342. package/VNet/IpAddress.d.ts +17 -0
  343. package/VNet/IpAddress.js +38 -0
  344. package/VNet/IpAddressPrefix.d.ts +22 -0
  345. package/VNet/IpAddressPrefix.js +42 -0
  346. package/VNet/NSGRules/AzADService.d.ts +10 -0
  347. package/VNet/NSGRules/AzADService.js +45 -0
  348. package/VNet/NetworkPeering.d.ts +10 -0
  349. package/VNet/NetworkPeering.js +29 -0
  350. package/VNet/PrivateDns.d.ts +33 -0
  351. package/VNet/PrivateDns.js +64 -0
  352. package/VNet/PrivateEndpoint.d.ts +9 -0
  353. package/VNet/PrivateEndpoint.js +71 -0
  354. package/VNet/PublicDns.d.ts +21 -0
  355. package/VNet/PublicDns.js +59 -0
  356. package/VNet/RouteTable.d.ts +13 -0
  357. package/VNet/RouteTable.js +23 -0
  358. package/VNet/SecurityGroup.d.ts +8 -0
  359. package/VNet/SecurityGroup.js +13 -0
  360. package/VNet/Subnet.d.ts +26 -0
  361. package/VNet/Subnet.js +48 -0
  362. package/VNet/VirtualWAN.d.ts +25 -0
  363. package/VNet/VirtualWAN.js +40 -0
  364. package/VNet/Vnet.d.ts +51 -0
  365. package/VNet/Vnet.js +196 -0
  366. package/VNet/index.d.ts +65 -0
  367. package/VNet/index.js +198 -0
  368. package/Web/AppCertOrder.d.ts +16 -0
  369. package/Web/AppCertOrder.js +34 -0
  370. package/Web/AppConfig.d.ts +16 -0
  371. package/Web/AppConfig.js +79 -0
  372. package/Web/AppGateway.d.ts +15 -0
  373. package/Web/AppGateway.js +32 -0
  374. package/Web/FuncApp.d.ts +12 -0
  375. package/Web/FuncApp.js +24 -0
  376. package/Web/Helpers.d.ts +6 -0
  377. package/Web/Helpers.js +36 -0
  378. package/Web/WebAppPlan.d.ts +7 -0
  379. package/Web/WebAppPlan.js +26 -0
  380. package/Web/types.d.ts +169 -0
  381. package/Web/types.js +3 -0
  382. package/package.json +34 -0
  383. package/types.d.ts +69 -0
  384. package/types.js +3 -0
  385. package/z_tests/_tools/Mocks.d.ts +2 -0
  386. package/z_tests/_tools/Mocks.js +47 -0
@@ -0,0 +1,361 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPolicies = exports.SetHeaderTypes = void 0;
4
+ const AzureEnv_1 = require("../../Common/AzureEnv");
5
+ const Helper_1 = require("../../VNet/Helper");
6
+ const StackEnv_1 = require("../../Common/StackEnv");
7
+ const defaultRateLimit = AzureEnv_1.isPrd ? 60 : 120;
8
+ const enableApimEventHub = false;
9
+ const getInMockResponse = ({ code = 200, contentType = 'text/html', }) => ` <mock-response status-code="${code}" content-type="${contentType}" />`;
10
+ const getInRewriteUri = ({ template = '/' }) => ` <rewrite-uri template="${template}" />`;
11
+ const setBaseUrl = ({ url }) => ` <set-backend-service base-url="${url}" />`;
12
+ const getInRateLimit = ({ call = defaultRateLimit, //The number of call in
13
+ period = 60, //1 minute
14
+ successConditionOnly, }) => successConditionOnly
15
+ ? ` <rate-limit-by-key calls="${call}"
16
+ renewal-period="${period}"
17
+ counter-key="@(context.Request.IpAddress)"
18
+ increment-condition="@(context.Response.StatusCode >= 200 && context.Response.StatusCode < 300)" />`
19
+ : ` <rate-limit-by-key calls="${call}"
20
+ renewal-period="${period}"
21
+ counter-key="@(context.Request.IpAddress)" />`;
22
+ const getInCache = () => ` <cache-lookup vary-by-developer="false"
23
+ vary-by-developer-groups="false"
24
+ allow-private-response-caching="true"
25
+ must-revalidate="true"
26
+ downstream-caching-type="public" />`;
27
+ const getOutCache = ({ duration = 60 }) => ` <cache-store duration="${duration}" />`;
28
+ const getInBackendCert = ({ thumbprint }) => ` <authentication-certificate thumbprint="${thumbprint}" />`;
29
+ const getInClientCertValidate = ({ issuer, subject, thumbprint, verifyCert, }) => ` <choose>
30
+ <when condition="@(context.Request.Certificate == null${verifyCert
31
+ ? ' || !context.Request.Certificate.VerifyNoRevocation()'
32
+ : ''}${issuer ? ` || context.Request.Certificate.Issuer != "${issuer}"` : ''}${subject
33
+ ? ` || context.Request.Certificate.SubjectName.Name != "${subject}"`
34
+ : ''}${thumbprint
35
+ ? ` || context.Request.Certificate.Thumbprint != "${thumbprint}"`
36
+ : ''})" >
37
+ <return-response>
38
+ <set-status code="403" reason="Invalid client certificate" />
39
+ </return-response>
40
+ </when>
41
+ </choose>`;
42
+ const getCorsPolicy = ({ origins }) => {
43
+ const orgs = origins
44
+ ? origins.map((o) => `<origin>${o}</origin>`)
45
+ : ['<origin>*</origin>'];
46
+ return `<cors allow-credentials="${Array.isArray(origins)}">
47
+ <allowed-origins>
48
+ ${orgs.join('\n')}
49
+ </allowed-origins>
50
+ <allowed-methods preflight-result-max-age="300">
51
+ <method>*</method>
52
+ </allowed-methods>
53
+ <allowed-headers>
54
+ <header>*</header>
55
+ </allowed-headers>
56
+ </cors>`;
57
+ };
58
+ //Event Hub Policy
59
+ const getEventHubPolicy = ({ eventHubName, captureClientCertThumbprint, azFuncUrl, azFuncKey, }) => {
60
+ const enableIpStack = azFuncKey && azFuncUrl;
61
+ const rs = `
62
+ <set-variable name="message-id" value="@(Guid.NewGuid())" />
63
+ ${enableIpStack
64
+ ? `
65
+ <set-variable name="ipstackBaseUrl" value="@("${azFuncUrl}?ipAddress=" + context.Request.IpAddress)" />
66
+ <send-request mode="new" response-variable-name="ipstackResponse" timeout="2" ignore-error="true">
67
+ <set-url>@((string)context.Variables["ipstackBaseUrl"])</set-url>
68
+ <set-method>POST</set-method>
69
+ <set-header name="x-functions-key" exists-action="override">
70
+ <value>${azFuncKey}</value>
71
+ </set-header>
72
+ </send-request>`
73
+ : ''}
74
+
75
+ <log-to-eventhub logger-id="${eventHubName}" partition-id="0">@{
76
+ string accountId = "";
77
+ string profileId = "";
78
+
79
+ string authHeader = context.Request.Headers.GetValueOrDefault("Authorization", "");
80
+ if (authHeader?.Length > 0)
81
+ {
82
+ string[] authHeaderParts = authHeader.Split(' ');
83
+ if (authHeaderParts?.Length == 2 && authHeaderParts[0].Equals("Bearer", StringComparison.InvariantCultureIgnoreCase))
84
+ {
85
+ Jwt jwt;
86
+ if (authHeaderParts[1].TryParseJwt(out jwt))
87
+ {
88
+ accountId = jwt.Claims.GetValueOrDefault("client_AccountId", "");
89
+ profileId = jwt.Claims.GetValueOrDefault("client_ProfileId", "");
90
+ }
91
+ }
92
+ }
93
+
94
+ string statusText = (context.Response.StatusCode >= 200 && context.Response.StatusCode <= 299) ? "PASS" : "FAIL";
95
+ string statusMsg = "";
96
+ if (context.Response.StatusCode == 400 || context.Response.StatusCode == 500) {
97
+ statusMsg = context.Response.Body?.As<string>(true);
98
+ }
99
+
100
+ string ipLocation = "";
101
+ ${enableIpStack
102
+ ? `
103
+ try {
104
+ var ipstackResponse = ((IResponse)context.Variables["ipstackResponse"]);
105
+ if (ipstackResponse.StatusCode == 200) {
106
+ ipLocation = (((IResponse)context.Variables["ipstackResponse"]).Body?.As<JObject>()["country_name"]).ToString();
107
+ }
108
+ }catch {}`
109
+ : ''}
110
+
111
+ string clientThumbprint = "";
112
+ ${captureClientCertThumbprint
113
+ ? `
114
+ string xCert = context.Request.Headers.GetValueOrDefault("X-ARR-ClientCert", "");
115
+ if(context.Request.Certificate != null){
116
+ clientThumbprint = context.Request.Certificate.Thumbprint;
117
+ }else if(xCert?.Length > 0){
118
+ var cert = new X509Certificate2(Convert.FromBase64String(xCert), (string)null);
119
+ clientThumbprint = cert.Thumbprint;
120
+ }
121
+ else{ clientThumbprint = "Not found";}
122
+ `
123
+ : ''}
124
+
125
+ return new JObject(
126
+ new JProperty("MessageId", context.Variables["message-id"]),
127
+ new JProperty("Method", context.Request.Method),
128
+ new JProperty("UrlPath", context.Request.Url.Path),
129
+ new JProperty("Timestamp", DateTime.UtcNow.ToString()),
130
+ new JProperty("IP_Address", context.Request.IpAddress),
131
+ new JProperty("IP_Location", ipLocation),
132
+ new JProperty("AccountId", accountId),
133
+ new JProperty("ProfileId", profileId),
134
+ new JProperty("Status", statusText),
135
+ new JProperty("HttpCode", context.Response.StatusCode),
136
+ new JProperty("Status_Message", statusMsg),
137
+ new JProperty("clientThumbprint", clientThumbprint)
138
+ ).ToString();
139
+ }</log-to-eventhub>`;
140
+ //console.log(rs);
141
+ return rs;
142
+ };
143
+ /** Validate Client IP Address with configured IP in Token. */
144
+ const getIPAddressFilterPolicy = () => {
145
+ const getFilterStatus = `
146
+ <set-header name="IpAddressValidation" exists-action="override">
147
+ <value>@{
148
+ Boolean ipAddressValid = false;
149
+ string authHeader = context.Request.Headers.GetValueOrDefault("Authorization", "");
150
+ if (authHeader?.Length > 0)
151
+ {
152
+ string[] authHeaderParts = authHeader.Split(' ');
153
+ if (authHeaderParts?.Length == 2 && authHeaderParts[0].Equals("Bearer", StringComparison.InvariantCultureIgnoreCase))
154
+ {
155
+ if (authHeaderParts[1].TryParseJwt(out Jwt jwt))
156
+ {
157
+ var ipsWhitelist = jwt.Claims.GetValueOrDefault("client_IpWhitelist", "");
158
+ IEnumerable<string> ips = ipsWhitelist
159
+ .Split(new char[] { ';', ',' }, StringSplitOptions.RemoveEmptyEntries)
160
+ .Select(p => p.Trim());
161
+
162
+ if(string.IsNullOrEmpty(ipsWhitelist) || ips.Contains(context.Request.IpAddress))
163
+ {
164
+ ipAddressValid = true;
165
+ }
166
+ }
167
+ }
168
+ }
169
+ else
170
+ {
171
+ ipAddressValid = true;
172
+ }
173
+
174
+ return ipAddressValid.ToString();
175
+ }</value>
176
+ </set-header>`;
177
+ const checkFilterValid = `
178
+ <choose>
179
+ <when condition="@(context.Request.Headers.GetValueOrDefault("IpAddressValidation", "").Equals(Boolean.FalseString))">
180
+ <return-response>
181
+ <set-status code="403" reason="Forbidden"/>
182
+ <set-body>@{
183
+ return new JObject(
184
+ new JProperty("message","IP does not match")
185
+ ).ToString();
186
+ }</set-body>
187
+ </return-response>
188
+ </when>
189
+ </choose>`;
190
+ return `
191
+ ${getFilterStatus}
192
+ ${checkFilterValid}
193
+ `;
194
+ };
195
+ const getIpWhitelistPolicy = ({ ipAddresses }) => {
196
+ const policy = `<ip-filter action="allow">\r\n${ipAddresses
197
+ .map((ip) => {
198
+ if (ip.includes('/')) {
199
+ const range = (0, Helper_1.getIpsRange)(ip);
200
+ return `<address-range from="${range.first}" to="${range.last}" />`;
201
+ }
202
+ return `<address>${ip}</address>`;
203
+ })
204
+ .join('\r\n')}\r\n</ip-filter>`;
205
+ //console.log(policy);
206
+ return policy;
207
+ };
208
+ var SetHeaderTypes;
209
+ (function (SetHeaderTypes) {
210
+ SetHeaderTypes["delete"] = "delete";
211
+ SetHeaderTypes["override"] = "override";
212
+ SetHeaderTypes["skip"] = "skip";
213
+ SetHeaderTypes["append"] = "append";
214
+ })(SetHeaderTypes || (exports.SetHeaderTypes = SetHeaderTypes = {}));
215
+ const setHeader = ({ name, type = SetHeaderTypes.delete, value, }) => {
216
+ let rs = `<set-header name="${name}" exists-action="${type}">`;
217
+ if (value) {
218
+ rs += ` <value>${value}</value>`;
219
+ }
220
+ rs += '</set-header>';
221
+ return rs;
222
+ };
223
+ const checkHeaderPolicy = ({ checkHeaders }) => {
224
+ return checkHeaders
225
+ .map((c) => {
226
+ return `<check-header name="${c.name}" failed-check-httpcode="401" failed-check-error-message="The header ${c.name} is not found" ignore-case="true">
227
+ ${c.value ? c.value.map((v) => `<value>${v}</value>`).join('\n') : ''}
228
+ </check-header>`;
229
+ })
230
+ .join('\n');
231
+ };
232
+ /** Set Client IP address to 'x-ts-client-ip' header key */
233
+ const setClientIpHeader = (key = `x-${StackEnv_1.organization}-clientIp`) => setHeader({
234
+ name: key,
235
+ value: '@(context.Request.IpAddress)',
236
+ type: SetHeaderTypes.override,
237
+ });
238
+ const setFindAndReplaces = (findAndReplaces) => findAndReplaces
239
+ .map((f) => ` <find-and-replace from="${f.from}" to="${f.to}" />`)
240
+ .join('\n');
241
+ const getPolicies = ({ enableClientIpHeader = false, findAndReplaces, ...props }) => {
242
+ const inbound = new Array();
243
+ const outbound = new Array();
244
+ const getProps = (p) => (typeof p === 'boolean' ? {} : p);
245
+ if (enableClientIpHeader) {
246
+ inbound.push(setClientIpHeader());
247
+ }
248
+ if (props.setBaseUrl) {
249
+ inbound.push(setBaseUrl(props.setBaseUrl));
250
+ }
251
+ if (props.rewriteUri) {
252
+ inbound.push(getInRewriteUri(getProps(props.rewriteUri)));
253
+ }
254
+ if (props.cache) {
255
+ inbound.push(getInCache());
256
+ outbound.push(getOutCache(getProps(props.cache)));
257
+ }
258
+ if (props.mockResponse) {
259
+ inbound.push(getInMockResponse(getProps(props.mockResponse)));
260
+ }
261
+ if (props.rateLimit) {
262
+ inbound.push(getInRateLimit(getProps(props.rateLimit)));
263
+ }
264
+ if (props.backendCert) {
265
+ inbound.push(getInBackendCert(props.backendCert));
266
+ }
267
+ if (props.cors) {
268
+ inbound.push(getCorsPolicy(getProps(props.cors)));
269
+ }
270
+ if (props.ipFilter) {
271
+ inbound.push(getIPAddressFilterPolicy());
272
+ }
273
+ if (props.whitelistIPs) {
274
+ inbound.push(getIpWhitelistPolicy({ ipAddresses: props.whitelistIPs }));
275
+ }
276
+ if (props.setHeaders) {
277
+ const array = Array.isArray(props.setHeaders)
278
+ ? props.setHeaders
279
+ : [props.setHeaders];
280
+ array.forEach((s) => inbound.push(setHeader(s)));
281
+ }
282
+ if (props.checkHeaders) {
283
+ inbound.push(checkHeaderPolicy(props.checkHeaders));
284
+ }
285
+ if (findAndReplaces) {
286
+ outbound.push(setFindAndReplaces(findAndReplaces));
287
+ }
288
+ if (props.customInboundPolicy) {
289
+ inbound.push(props.customInboundPolicy);
290
+ }
291
+ if (props.customOutPolicy) {
292
+ outbound.push(props.customOutPolicy);
293
+ }
294
+ //======This always in the last position.===========
295
+ if (props.clientCert) {
296
+ inbound.push(getInClientCertValidate(props.clientCert));
297
+ }
298
+ let backend = '<base />';
299
+ if (!props.mockResponse) {
300
+ backend =
301
+ '<forward-request timeout="120" follow-redirects="true" buffer-request-body="true" fail-on-error-status-code="true"/>';
302
+ }
303
+ return `<policies>
304
+ <inbound>
305
+ <base />
306
+ ${inbound.join('\n')}
307
+ </inbound>
308
+ <backend>
309
+ ${backend}
310
+ </backend>
311
+ <outbound>
312
+ <base />
313
+ <set-header name="Strict-Transport-Security" exists-action="override">
314
+ <value>max-age=15724800; includeSubDomains</value>
315
+ </set-header>
316
+ <set-header name="X-XSS-Protection" exists-action="override">
317
+ <value>1; mode=block</value>
318
+ </set-header>
319
+ <set-header name="Content-Security-Policy" exists-action="override">
320
+ <value>default-src 'self' data: 'unsafe-inline' 'unsafe-eval'</value>
321
+ </set-header>
322
+ <set-header name="X-Frame-Options" exists-action="override">
323
+ <value>Deny</value>
324
+ </set-header>
325
+ <set-header name="X-Content-Type-Options" exists-action="override">
326
+ <value>nosniff</value>
327
+ </set-header>
328
+ <set-header name="Expect-Ct" exists-action="override">
329
+ <value>max-age=604800,enforce</value>
330
+ </set-header>
331
+ <set-header name="Cache-Control" exists-action="override">
332
+ <value>none</value>
333
+ </set-header>
334
+ <set-header name="X-Powered-By" exists-action="delete" />
335
+ <set-header name="X-AspNet-Version" exists-action="delete" />
336
+
337
+ ${outbound.join('\n')}
338
+ ${enableApimEventHub && props.logEventHubName
339
+ ? getEventHubPolicy({
340
+ eventHubName: props.logEventHubName,
341
+ azFuncUrl: props.azFuncUrl,
342
+ azFuncKey: props.azFuncKey,
343
+ captureClientCertThumbprint: props.captureClientCertThumbprint,
344
+ })
345
+ : ''}
346
+ </outbound>
347
+ <on-error>
348
+ <base />
349
+ ${enableApimEventHub && props.logEventHubName
350
+ ? getEventHubPolicy({
351
+ eventHubName: props.logEventHubName,
352
+ azFuncUrl: props.azFuncUrl,
353
+ azFuncKey: props.azFuncKey,
354
+ captureClientCertThumbprint: props.captureClientCertThumbprint,
355
+ })
356
+ : ''}
357
+ </on-error>
358
+ </policies>`;
359
+ };
360
+ exports.getPolicies = getPolicies;
361
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9saWN5QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcGltL0FwaVByb2R1Y3QvUG9saWN5QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBOEM7QUFDOUMsOENBQWdEO0FBQ2hELG9EQUFxRDtBQUVyRCxNQUFNLGdCQUFnQixHQUFHLGdCQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzFDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0FBT2pDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUN6QixJQUFJLEdBQUcsR0FBRyxFQUNWLFdBQVcsR0FBRyxXQUFXLEdBQ2YsRUFBRSxFQUFFLENBQ2QscUNBQXFDLElBQUksbUJBQW1CLFdBQVcsTUFBTSxDQUFDO0FBTWhGLE1BQU0sZUFBZSxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsR0FBRyxFQUFtQixFQUFFLEVBQUUsQ0FDOUQsZ0NBQWdDLFFBQVEsTUFBTSxDQUFDO0FBTWpELE1BQU0sVUFBVSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQWdCLEVBQUUsRUFBRSxDQUMzQyxxQ0FBcUMsR0FBRyxNQUFNLENBQUM7QUFXakQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxFQUN0QixJQUFJLEdBQUcsZ0JBQWdCLEVBQUUsdUJBQXVCO0FBQ2hELE1BQU0sR0FBRyxFQUFFLEVBQUUsVUFBVTtBQUN2QixvQkFBb0IsR0FDTCxFQUFFLEVBQUUsQ0FDbkIsb0JBQW9CO0lBQ2xCLENBQUMsQ0FBQyxtQ0FBbUMsSUFBSTs4QkFDZixNQUFNOztnSEFFNEU7SUFDNUcsQ0FBQyxDQUFDLG1DQUFtQyxJQUFJOzhCQUNmLE1BQU07MERBQ3NCLENBQUM7QUFFM0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQ3RCOzs7O2dEQUk4QyxDQUFDO0FBS2pELE1BQU0sV0FBVyxHQUFHLENBQUMsRUFBRSxRQUFRLEdB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
@@ -0,0 +1,8 @@
1
+ import { ApimInfo, KeyVaultInfo } from '../../types';
2
+ export interface ProductProps {
3
+ name: string;
4
+ apimInfo: ApimInfo;
5
+ subscriptionRequired?: boolean;
6
+ vaultInfo?: KeyVaultInfo;
7
+ }
8
+ export declare const createProduct: ({ name, apimInfo, subscriptionRequired, vaultInfo, }: ProductProps) => Promise<import("@pulumi/azure-native/apimanagement/product").Product>;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createProduct = void 0;
4
+ const apim = require("@pulumi/azure-native/apimanagement");
5
+ const ResourceEnv_1 = require("../../Common/ResourceEnv");
6
+ const pulumi_1 = require("@pulumi/pulumi");
7
+ const Random_1 = require("../../Core/Random");
8
+ const Naming_1 = require("../../Common/Naming");
9
+ const CustomHelper_1 = require("../../KeyVault/CustomHelper");
10
+ const getProductName = (name) => (0, ResourceEnv_1.getResourceName)(name, { prefix: '', suffix: 'prod', includeOrgName: false });
11
+ const getSubscriptionName = (name) => (0, ResourceEnv_1.getResourceName)(name, {
12
+ prefix: 'apim',
13
+ suffix: 'sub',
14
+ includeOrgName: false,
15
+ });
16
+ const createProduct = async ({ name, apimInfo, subscriptionRequired, vaultInfo, }) => {
17
+ const pName = getProductName(name);
18
+ const product = new apim.Product(pName, {
19
+ productId: pName,
20
+ displayName: pName,
21
+ description: pName,
22
+ serviceName: apimInfo.serviceName,
23
+ resourceGroupName: apimInfo.group.resourceGroupName,
24
+ subscriptionRequired,
25
+ approvalRequired: subscriptionRequired ? false : undefined,
26
+ subscriptionsLimit: subscriptionRequired ? 5 : undefined,
27
+ });
28
+ if (subscriptionRequired && vaultInfo) {
29
+ const subName = getSubscriptionName(name);
30
+ const primaryKey = (0, Naming_1.getPasswordName)(subName, 'primary');
31
+ const secondaryKey = (0, Naming_1.getPasswordName)(subName, 'secondary');
32
+ const primaryPass = (0, Random_1.randomPassword)({ name: primaryKey }).result;
33
+ const secondaryPass = (0, Random_1.randomPassword)({ name: secondaryKey }).result;
34
+ new apim.Subscription(subName, {
35
+ sid: subName,
36
+ displayName: subName,
37
+ serviceName: apimInfo.serviceName,
38
+ resourceGroupName: apimInfo.group.resourceGroupName,
39
+ scope: (0, pulumi_1.interpolate) `/products/${product.id}`,
40
+ primaryKey: primaryPass,
41
+ secondaryKey: secondaryPass,
42
+ }, { dependsOn: product });
43
+ (0, CustomHelper_1.addCustomSecret)({
44
+ name: primaryKey,
45
+ formattedName: true,
46
+ value: primaryPass,
47
+ contentType: subName,
48
+ vaultInfo,
49
+ tags: { name, subName },
50
+ });
51
+ (0, CustomHelper_1.addCustomSecret)({
52
+ name: secondaryKey,
53
+ formattedName: true,
54
+ value: secondaryPass,
55
+ contentType: subName,
56
+ vaultInfo,
57
+ tags: { name, subName },
58
+ });
59
+ }
60
+ return product;
61
+ };
62
+ exports.createProduct = createProduct;
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvZHVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcGltL0FwaVByb2R1Y3QvUHJvZHVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyREFBMkQ7QUFDM0QsMERBQTJEO0FBQzNELDJDQUE2QztBQUM3Qyw4Q0FBbUQ7QUFDbkQsZ0RBQXNEO0FBQ3RELDhEQUE4RDtBQUU5RCxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQ3RDLElBQUEsNkJBQWUsRUFBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDL0UsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQzNDLElBQUEsNkJBQWUsRUFBQyxJQUFJLEVBQUU7SUFDcEIsTUFBTSxFQUFFLE1BQU07SUFDZCxNQUFNLEVBQUUsS0FBSztJQUNiLGNBQWMsRUFBRSxLQUFLO0NBQ3RCLENBQUMsQ0FBQztBQVNFLE1BQU0sYUFBYSxHQUFHLEtBQUssRUFBRSxFQUNsQyxJQUFJLEVBQ0osUUFBUSxFQUNSLG9CQUFvQixFQUNwQixTQUFTLEdBQ0ksRUFBRSxFQUFFO0lBQ2pCLE1BQU0sS0FBSyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFO1FBQ3RDLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLFdBQVcsRUFBRSxLQUFLO1FBQ2xCLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztRQUNqQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtRQUVuRCxvQkFBb0I7UUFDcEIsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUztRQUMxRCxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0tBQ3pELENBQUMsQ0FBQztJQUVILElBQUksb0JBQW9CLElBQUksU0FBUyxFQUFFLENBQUM7UUFDdEMsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsSUFBQSx3QkFBZSxFQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN2RCxNQUFNLFlBQVksR0FBRyxJQUFBLHdCQUFlLEVBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTNELE1BQU0sV0FBVyxHQUFHLElBQUEsdUJBQWMsRUFBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNoRSxNQUFNLGFBQWEsR0FBRyxJQUFBLHVCQUFjLEVBQUMsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFcEUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUNuQixPQUFPLEVBQ1A7WUFDRSxHQUFHLEVBQUUsT0FBTztZQUNaLFdBQVcsRUFBRSxPQUFPO1lBQ3BCLFdBQVcsRUFBRSxRQUFRLENBQUMsV0FBVztZQUNqQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtZQUNuRCxLQUFLLEVBQUUsSUFBQSxvQkFBVyxFQUFBLGFBQWEsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUMzQyxVQUFVLEVBQUUsV0FBVztZQUN2QixZQUFZLEVBQUUsYUFBYTtTQUM1QixFQUNELEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUN2QixDQUFDO1FBRUYsSUFBQSw4QkFBZSxFQUFDO1lBQ2QsSUFBSSxFQUFFLFVBQVU7WUFDaEIsYUFBYSxFQUFFLElBQUk7WUFDbkIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsV0FBVyxFQUFFLE9BQU87WUFDcEIsU0FBUztZQUNULElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7U0FDeEIsQ0FBQyxDQUFDO1FBRUgsSUFBQSw4QkFBZSxFQUFDO1lBQ2QsSUFBSSxFQUFFLFlBQVk7WUFDbEIsYUFBYSxFQUFFLElBQUk7WUFDbkIsS0FBSyxFQUFFLGFBQWE7WUFDcEIsV0FBVyxFQUFFLE9BQU87WUFDcEIsU0FBUztZQUNULElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQTdEVyxRQUFBLGFBQWEsaUJBNkR4QiJ9
@@ -0,0 +1,6 @@
1
+ import { Input } from "@pulumi/pulumi";
2
+ export interface ApiImport {
3
+ contentFormat: Input<string>;
4
+ contentValue: Input<string>;
5
+ }
6
+ export declare const getImportConfig: (specUrl: string, version: string) => Promise<string | undefined>;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getImportConfig = void 0;
4
+ const axios_1 = require("axios");
5
+ const Helpers_1 = require("../../Common/Helpers");
6
+ const removeVersion = (data, version) => {
7
+ if (!data?.paths) {
8
+ console.error(`APIM-removeVersion: There is no paths found in`, data);
9
+ return data;
10
+ }
11
+ const newPaths = {};
12
+ //Replace version from path
13
+ Object.keys(data.paths).forEach((k) => {
14
+ const newKey = (0, Helpers_1.replaceAll)(k, `/${version}`, "");
15
+ //console.log('Replaced: ', { current: k, new: newKey });
16
+ newPaths[newKey] = data.paths[k];
17
+ });
18
+ data.paths = newPaths;
19
+ return data;
20
+ };
21
+ const downloadSpecFile = async (fileUrl) => {
22
+ //console.log('Downloading Specs Url', fileUrl);
23
+ try {
24
+ //Get specs json from URL
25
+ const specs = await axios_1.default.get(fileUrl);
26
+ return specs.data;
27
+ }
28
+ catch {
29
+ console.error("Not able to get spec file from:", fileUrl);
30
+ return undefined;
31
+ }
32
+ };
33
+ const getImportConfig = async (specUrl, version) => {
34
+ const spec = await downloadSpecFile(specUrl);
35
+ if (!spec)
36
+ return undefined;
37
+ //Validate
38
+ //if (!validateSpecFile(specUrl, spec)) return undefined;
39
+ //Remove Version
40
+ const data = removeVersion(spec, version);
41
+ return JSON.stringify(data);
42
+ };
43
+ exports.getImportConfig = getImportConfig;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3dhZ2dlckhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcGltL0FwaVByb2R1Y3QvU3dhZ2dlckhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxpQ0FBMEI7QUFDMUIsa0RBQWtEO0FBRWxELE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBYyxFQUFFLE9BQWUsRUFBWSxFQUFFO0lBQ2xFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDakIsT0FBTyxDQUFDLEtBQUssQ0FBQyxnREFBZ0QsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxFQUFTLENBQUM7SUFFM0IsMkJBQTJCO0lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUEsb0JBQVUsRUFBQyxDQUFDLEVBQUUsSUFBSSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoRCx5REFBeUQ7UUFFekQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztJQUN0QixPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQU9GLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUM1QixPQUFlLEVBQ2dCLEVBQUU7SUFDakMsZ0RBQWdEO0lBRWhELElBQUksQ0FBQztRQUNILHlCQUF5QjtRQUN6QixNQUFNLEtBQUssR0FBRyxNQUFNLGVBQUssQ0FBQyxHQUFHLENBQVcsT0FBTyxDQUFDLENBQUM7UUFDakQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3BCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFSyxNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQ2xDLE9BQWUsRUFDZixPQUFlLEVBQ2MsRUFBRTtJQUMvQixNQUFNLElBQUksR0FBRyxNQUFNLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTdDLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFNUIsVUFBVTtJQUNWLHlEQUF5RDtJQUV6RCxnQkFBZ0I7SUFDaEIsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBZFcsUUFBQSxlQUFlLG1CQWMxQiJ9
@@ -0,0 +1,9 @@
1
+ import { ProductProps } from './Product';
2
+ import { ApiProps } from './Api';
3
+ interface Props extends ProductProps, Omit<ApiProps, 'product'> {
4
+ }
5
+ declare const _default: ({ name, apimInfo, subscriptionRequired, vaultInfo, ...others }: Props) => Promise<{
6
+ set: import("@pulumi/azure-native/apimanagement/apiVersionSet").ApiVersionSet | undefined;
7
+ apis: import("@pulumi/azure-native/apimanagement/api").Api[];
8
+ }>;
9
+ export default _default;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Product_1 = require("./Product");
4
+ const Api_1 = require("./Api");
5
+ exports.default = async ({ name, apimInfo, subscriptionRequired, vaultInfo, ...others }) => {
6
+ const product = await (0, Product_1.createProduct)({
7
+ name,
8
+ apimInfo,
9
+ vaultInfo,
10
+ subscriptionRequired,
11
+ });
12
+ product.name.apply(console.log);
13
+ const api = (0, Api_1.createApi)({
14
+ name,
15
+ apimInfo,
16
+ product,
17
+ subscriptionRequired,
18
+ ...others,
19
+ });
20
+ return { product, ...api };
21
+ };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQXBpbS9BcGlQcm9kdWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdUNBQXdEO0FBQ3hELCtCQUE0QztBQUk1QyxrQkFBZSxLQUFLLEVBQUUsRUFDcEIsSUFBSSxFQUNKLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULEdBQUcsTUFBTSxFQUNILEVBQUUsRUFBRTtJQUNWLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx1QkFBYSxFQUFDO1FBQ2xDLElBQUk7UUFDSixRQUFRO1FBQ1IsU0FBUztRQUNULG9CQUFvQjtLQUNyQixDQUFDLENBQUM7SUFFSCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFaEMsTUFBTSxHQUFHLEdBQUcsSUFBQSxlQUFTLEVBQUM7UUFDcEIsSUFBSTtRQUNKLFFBQVE7UUFDUixPQUFPO1FBQ1Asb0JBQW9CO1FBQ3BCLEdBQUcsTUFBTTtLQUNWLENBQUMsQ0FBQztJQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUM3QixDQUFDLENBQUMifQ==
File without changes
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9BcGltL0hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,20 @@
1
+ import { PoliciesProps } from '../ApiProduct/PolicyBuilder';
2
+ import { ApimInfo, KeyVaultInfo } from '../../types';
3
+ interface Props {
4
+ name?: string;
5
+ apimInfo: ApimInfo;
6
+ subscriptionRequired?: boolean;
7
+ vaultInfo?: KeyVaultInfo;
8
+ policies?: PoliciesProps;
9
+ domain: string;
10
+ authHeaderKey: string;
11
+ hookHeaderKey: string;
12
+ }
13
+ declare const _default: ({ name, subscriptionRequired, domain, hookHeaderKey, authHeaderKey, policies, ...props }: Props) => Promise<{
14
+ product: import("@pulumi/azure-native/apimanagement/product").Product;
15
+ api: {
16
+ set: import("@pulumi/azure-native/apimanagement/apiVersionSet").ApiVersionSet | undefined;
17
+ apis: import("@pulumi/azure-native/apimanagement/api").Api[];
18
+ };
19
+ }>;
20
+ export default _default;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const PolicyBuilder_1 = require("../ApiProduct/PolicyBuilder");
4
+ const Product_1 = require("../ApiProduct/Product");
5
+ const Api_1 = require("../ApiProduct/Api");
6
+ exports.default = async ({ name = 'hook-proxy', subscriptionRequired = true, domain, hookHeaderKey, authHeaderKey, policies, ...props }) => {
7
+ const product = await (0, Product_1.createProduct)({ name, ...props, subscriptionRequired });
8
+ const api = await (0, Api_1.createApi)({
9
+ name,
10
+ ...props,
11
+ enableApiSet: false,
12
+ product,
13
+ authHeaderKey,
14
+ policies: {
15
+ ...policies,
16
+ setHeaders: [{ name: authHeaderKey, type: PolicyBuilder_1.SetHeaderTypes.delete }],
17
+ checkHeaders: {
18
+ checkHeaders: [{ name: hookHeaderKey }],
19
+ },
20
+ },
21
+ //Dummy Url as it will be set from request header key `hookHeaderKey`
22
+ serviceUrl: `https://${domain}`,
23
+ operations: [{ name: 'Post', method: 'POST', urlTemplate: '/' }],
24
+ });
25
+ return { product, api };
26
+ };
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQXBpbS9Ib29rUHJveHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwrREFBNEU7QUFFNUUsbURBQXNEO0FBQ3RELDJDQUE4QztBQWE5QyxrQkFBZSxLQUFLLEVBQUUsRUFDcEIsSUFBSSxHQUFHLFlBQVksRUFDbkIsb0JBQW9CLEdBQUcsSUFBSSxFQUMzQixNQUFNLEVBQ04sYUFBYSxFQUNiLGFBQWEsRUFDYixRQUFRLEVBQ1IsR0FBRyxLQUFLLEVBQ0YsRUFBRSxFQUFFO0lBQ1YsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLHVCQUFhLEVBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBRTlFLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSxlQUFTLEVBQUM7UUFDMUIsSUFBSTtRQUNKLEdBQUcsS0FBSztRQUNSLFlBQVksRUFBRSxLQUFLO1FBQ25CLE9BQU87UUFDUCxhQUFhO1FBQ2IsUUFBUSxFQUFFO1lBQ1IsR0FBRyxRQUFRO1lBQ1gsVUFBVSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSw4QkFBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xFLFlBQVksRUFBRTtnQkFDWixZQUFZLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsQ0FBQzthQUN4QztTQUNGO1FBQ0QscUVBQXFFO1FBQ3JFLFVBQVUsRUFBRSxXQUFXLE1BQU0sRUFBRTtRQUMvQixVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7S0FDakUsQ0FBQyxDQUFDO0lBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztBQUMxQixDQUFDLENBQUMifQ==
@@ -0,0 +1,22 @@
1
+ import * as apimanagement from '@pulumi/azure-native/apimanagement';
2
+ import { Input } from '@pulumi/pulumi';
3
+ import { ApimInfo, BasicResourceArgs, DefaultResourceArgs } from '../types';
4
+ interface Props extends BasicResourceArgs, Omit<DefaultResourceArgs, "monitoring"> {
5
+ insight?: {
6
+ id: Input<string>;
7
+ key: Input<string>;
8
+ };
9
+ sku: apimanagement.SkuType;
10
+ capacity?: number;
11
+ alertEmail: Input<string>;
12
+ customDomain?: {
13
+ domain: string;
14
+ certificate: Input<string>;
15
+ certificatePassword?: Input<string>;
16
+ };
17
+ }
18
+ declare const _default: ({ name, group, customDomain, insight, sku, capacity, lock, alertEmail, ...others }: Props) => {
19
+ apim: import("@pulumi/azure-native/apimanagement/apiManagementService").ApiManagementService;
20
+ toApimInfo: () => ApimInfo;
21
+ };
22
+ export default _default;