@drunk-pulumi/azure 0.0.42 → 0.0.43

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 (177) hide show
  1. package/Aks/Helper.js +25 -2
  2. package/Aks/Identity.js +5 -2
  3. package/Aks/VmSetAutoScale/index.js +25 -2
  4. package/Aks/VmSetMonitor/index.js +26 -3
  5. package/Aks/index.d.ts +2 -2
  6. package/Aks/index.js +35 -6
  7. package/Apim/ApiProduct/SwaggerHelper.d.ts +0 -5
  8. package/Apim/ApiProduct/SwaggerHelper.js +7 -12
  9. package/Apim/Helpers.d.ts +2 -0
  10. package/Apim/Helpers.js +17 -1
  11. package/Apps/LogicApp.js +29 -3
  12. package/Automation/index.js +29 -3
  13. package/AzAd/B2C.js +25 -2
  14. package/AzAd/EnvRoles.Consts.d.ts +1 -1
  15. package/AzAd/EnvRoles.Consts.js +38 -35
  16. package/AzAd/EnvRoles.js +5 -2
  17. package/AzAd/Group.js +25 -2
  18. package/AzAd/Identities/AzDevOpsIdentity.js +5 -2
  19. package/AzAd/Identities/AzDevOpsManagedIdentity.js +5 -2
  20. package/AzAd/Identities/AzUserAdRevertSync.js +5 -2
  21. package/AzAd/Identities/index.js +7 -4
  22. package/AzAd/Identity.js +26 -3
  23. package/AzAd/Role.js +5 -2
  24. package/AzAd/RoleAssignment.js +29 -26
  25. package/AzAd/RoleDefinitions/JustInTimeRequestRole.js +25 -2
  26. package/AzAd/UserAssignedIdentity.js +25 -2
  27. package/Builder/AksBuilder.js +6 -3
  28. package/Builder/ApimApiBuilder.d.ts +22 -0
  29. package/Builder/ApimApiBuilder.js +198 -0
  30. package/Builder/ApimBuilder.d.ts +3 -0
  31. package/Builder/ApimBuilder.js +325 -0
  32. package/Builder/ApimPolicyBuilder.d.ts +51 -0
  33. package/Builder/ApimPolicyBuilder.js +384 -0
  34. package/Builder/ApimProductBuilder.d.ts +21 -0
  35. package/Builder/ApimProductBuilder.js +153 -0
  36. package/Builder/ApimRootBuilder.d.ts +9 -0
  37. package/Builder/ApimRootBuilder.js +26 -0
  38. package/Builder/ApimWorkspaceBuilder.d.ts +10 -0
  39. package/Builder/ApimWorkspaceBuilder.js +57 -0
  40. package/Builder/CdnBuilder.d.ts +13 -0
  41. package/Builder/CdnBuilder.js +39 -0
  42. package/Builder/DnsZoneBuilder.js +37 -16
  43. package/Builder/PrivateDnsZoneBuilder.js +48 -24
  44. package/Builder/ResourceBuilder.js +20 -5
  45. package/Builder/SqlBuilder.js +5 -6
  46. package/Builder/StorageBuilder.d.ts +3 -0
  47. package/Builder/StorageBuilder.js +101 -0
  48. package/Builder/VaultBuilder.js +25 -2
  49. package/Builder/VmBuilder.js +16 -3
  50. package/Builder/VnetBuilder.js +21 -20
  51. package/Builder/index.d.ts +4 -0
  52. package/Builder/index.js +21 -10
  53. package/Builder/types/apimBuilder.d.ts +71 -0
  54. package/Builder/types/apimBuilder.js +3 -0
  55. package/Builder/types/apimPolicyBuilder.d.ts +84 -0
  56. package/Builder/types/apimPolicyBuilder.js +11 -0
  57. package/Builder/types/apimProductBuilder.d.ts +56 -0
  58. package/Builder/types/apimProductBuilder.js +3 -0
  59. package/Builder/types/apimWorkspaceBuilder.d.ts +2 -0
  60. package/Builder/types/apimWorkspaceBuilder.js +3 -0
  61. package/Builder/types/askBuilder.d.ts +2 -6
  62. package/Builder/types/cdnBuilder.d.ts +7 -0
  63. package/Builder/types/cdnBuilder.js +3 -0
  64. package/Builder/types/genericBuilder.d.ts +5 -5
  65. package/Builder/types/genericBuilder.js +1 -1
  66. package/Builder/types/index.d.ts +6 -0
  67. package/Builder/types/index.js +7 -1
  68. package/Builder/types/resourceBuilder.d.ts +3 -1
  69. package/Builder/types/storageBuilder.d.ts +24 -0
  70. package/Builder/types/storageBuilder.js +3 -0
  71. package/Builder/types/vmBuilder.d.ts +4 -2
  72. package/Cdn/CdnEndpoint.d.ts +13 -0
  73. package/Cdn/CdnEndpoint.js +94 -0
  74. package/{Storage → Cdn}/CdnRules.d.ts +2 -2
  75. package/Cdn/CdnRules.js +133 -0
  76. package/Cdn/index.d.ts +7 -6
  77. package/Cdn/index.js +45 -33
  78. package/Certificate/index.js +27 -4
  79. package/Certificate/p12.js +25 -2
  80. package/Common/AzureEnv.js +25 -2
  81. package/Common/ConfigHelper.js +25 -2
  82. package/Common/GlobalEnv.d.ts +2 -7
  83. package/Common/GlobalEnv.js +12 -5
  84. package/Common/StackEnv.js +25 -2
  85. package/Common/index.js +29 -6
  86. package/ContainerRegistry/Helper.js +29 -3
  87. package/ContainerRegistry/index.js +31 -5
  88. package/Core/Locker.js +25 -2
  89. package/Core/Random.js +25 -2
  90. package/Core/ResourceCreator.js +5 -2
  91. package/Core/ResourceGroup.js +5 -2
  92. package/CosmosDb/index.js +29 -3
  93. package/CustomRoles/index.js +25 -2
  94. package/IOT/Hub/index.js +25 -2
  95. package/KeyVault/Helper.js +25 -2
  96. package/KeyVault/index.js +29 -3
  97. package/Logs/AppInsight.d.ts +4 -4
  98. package/Logs/AppInsight.js +35 -9
  99. package/Logs/Helpers.d.ts +12 -9
  100. package/Logs/Helpers.js +57 -14
  101. package/Logs/LogAnalytics.js +25 -2
  102. package/Logs/WebTest.d.ts +1 -1
  103. package/Logs/WebTest.js +35 -12
  104. package/Logs/index.d.ts +1 -10
  105. package/Logs/index.js +36 -8
  106. package/MySql/index.js +30 -4
  107. package/Postgresql/index.js +30 -4
  108. package/RedisCache/index.js +26 -3
  109. package/ServiceBus/index.js +30 -4
  110. package/SignalR/index.js +29 -3
  111. package/Sql/SqlDb.js +25 -2
  112. package/Sql/index.d.ts +2 -3
  113. package/Sql/index.js +33 -5
  114. package/Storage/Helper.js +25 -2
  115. package/Storage/ManagementRules.js +25 -2
  116. package/Storage/index.d.ts +37 -39
  117. package/Storage/index.js +71 -97
  118. package/VM/AzureDevOpsExtension.js +5 -2
  119. package/VM/Extension.js +25 -2
  120. package/VM/GlobalSchedule.js +25 -2
  121. package/VM/index.d.ts +7 -6
  122. package/VM/index.js +32 -6
  123. package/VNet/Bastion.js +29 -3
  124. package/VNet/Firewall.js +31 -5
  125. package/VNet/FirewallPolicies/index.js +8 -5
  126. package/VNet/FirewallPolicy.js +25 -2
  127. package/VNet/GlobalNetworkPeering.js +25 -2
  128. package/VNet/Helper.js +26 -3
  129. package/VNet/IpAddress.js +30 -4
  130. package/VNet/IpAddressPrefix.js +30 -4
  131. package/VNet/NSGRules/ApimSecurityRule.d.ts +7 -0
  132. package/VNet/NSGRules/ApimSecurityRule.js +34 -0
  133. package/VNet/NSGRules/AzADSecurityRule.d.ts +2 -2
  134. package/VNet/NSGRules/AzADSecurityRule.js +2 -2
  135. package/VNet/NSGRules/BastionSecurityRule.d.ts +1 -2
  136. package/VNet/NSGRules/BastionSecurityRule.js +2 -2
  137. package/VNet/NSGRules/index.d.ts +4 -0
  138. package/VNet/NSGRules/index.js +15 -0
  139. package/VNet/NatGateway.js +25 -2
  140. package/VNet/NetworkPeering.js +25 -2
  141. package/VNet/PrivateEndpoint.js +26 -3
  142. package/VNet/RouteTable.js +25 -2
  143. package/VNet/SecurityGroup.js +25 -2
  144. package/VNet/Subnet.js +25 -2
  145. package/VNet/VPNGateway.js +29 -3
  146. package/VNet/VirtualWAN.js +29 -3
  147. package/VNet/Vnet.d.ts +2 -2
  148. package/VNet/Vnet.js +35 -6
  149. package/VNet/index.d.ts +3 -0
  150. package/VNet/index.js +34 -8
  151. package/Web/AppCertOrder.js +29 -3
  152. package/Web/AppConfig.d.ts +8 -11
  153. package/Web/AppConfig.js +51 -33
  154. package/Web/AppGateway.js +29 -3
  155. package/Web/FuncApp.js +25 -2
  156. package/Web/Helpers.js +25 -2
  157. package/Web/WebAppPlan.js +25 -2
  158. package/index.d.ts +1 -0
  159. package/index.js +18 -0
  160. package/package.json +5 -4
  161. package/types.d.ts +0 -6
  162. package/z_tests/_tools/Mocks.js +25 -2
  163. package/Apim/ApiProduct/Api.d.ts +0 -35
  164. package/Apim/ApiProduct/Api.js +0 -131
  165. package/Apim/ApiProduct/PolicyBuilder.d.ts +0 -79
  166. package/Apim/ApiProduct/PolicyBuilder.js +0 -359
  167. package/Apim/ApiProduct/Product.d.ts +0 -8
  168. package/Apim/ApiProduct/Product.js +0 -63
  169. package/Apim/ApiProduct/index.d.ts +0 -9
  170. package/Apim/ApiProduct/index.js +0 -21
  171. package/Apim/HookProxy/index.d.ts +0 -20
  172. package/Apim/HookProxy/index.js +0 -27
  173. package/Apim/index.d.ts +0 -22
  174. package/Apim/index.js +0 -115
  175. package/Storage/CdnEndpoint.d.ts +0 -12
  176. package/Storage/CdnEndpoint.js +0 -61
  177. package/Storage/CdnRules.js +0 -134
@@ -1,79 +0,0 @@
1
- interface MockProps {
2
- code?: number;
3
- contentType?: string;
4
- }
5
- interface RewriteUriProps {
6
- template?: string;
7
- }
8
- interface BaseUrlProps {
9
- url: string;
10
- }
11
- interface RateLimitProps {
12
- /** Number of call */
13
- call?: number;
14
- /** in period (second) */
15
- period?: number;
16
- /** only applied to the success condition `@(context.Response.StatusCode >= 200 && context.Response.StatusCode < 300)` */
17
- successConditionOnly?: boolean;
18
- }
19
- interface OutCacheProps {
20
- duration?: number;
21
- }
22
- interface AuthCertProps {
23
- thumbprint: string;
24
- }
25
- export interface ClientCertProps extends Partial<AuthCertProps> {
26
- issuer?: string;
27
- subject?: string;
28
- verifyCert?: boolean;
29
- }
30
- interface CorsProps {
31
- origins?: string[];
32
- }
33
- export declare enum SetHeaderTypes {
34
- delete = "delete",
35
- override = "override",
36
- skip = "skip",
37
- append = "append"
38
- }
39
- interface SetHeaderProps {
40
- name: string;
41
- value?: string;
42
- type: SetHeaderTypes;
43
- }
44
- interface CheckHeaders {
45
- checkHeaders: Array<{
46
- name: string;
47
- value?: string[];
48
- }>;
49
- }
50
- export interface PoliciesProps {
51
- setBaseUrl?: BaseUrlProps;
52
- setHeaders?: Array<SetHeaderProps> | SetHeaderProps;
53
- checkHeaders?: CheckHeaders;
54
- mockResponse?: MockProps | boolean;
55
- rewriteUri?: RewriteUriProps | boolean;
56
- rateLimit?: RateLimitProps | boolean;
57
- cache?: OutCacheProps | boolean;
58
- backendCert?: AuthCertProps;
59
- clientCert?: ClientCertProps;
60
- cors?: CorsProps | boolean;
61
- enableClientIpHeader?: boolean;
62
- logEventHubName?: string;
63
- captureClientCertThumbprint?: boolean;
64
- azFuncUrl?: string;
65
- azFuncKey?: string;
66
- /** Filter IP from Bearer Token */
67
- ipFilter?: boolean;
68
- /** IP Address Whitelisting */
69
- whitelistIPs?: string[];
70
- /**Replace outbound results */
71
- findAndReplaces?: Array<{
72
- from: string;
73
- to: string;
74
- }>;
75
- customInboundPolicy?: string;
76
- customOutPolicy?: string;
77
- }
78
- export declare const getPolicies: ({ enableClientIpHeader, findAndReplaces, ...props }: PoliciesProps) => string;
79
- export {};
@@ -1,359 +0,0 @@
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
- return rs;
141
- };
142
- /** Validate Client IP Address with configured IP in Token. */
143
- const getIPAddressFilterPolicy = () => {
144
- const getFilterStatus = `
145
- <set-header name="IpAddressValidation" exists-action="override">
146
- <value>@{
147
- Boolean ipAddressValid = false;
148
- string authHeader = context.Request.Headers.GetValueOrDefault("Authorization", "");
149
- if (authHeader?.Length > 0)
150
- {
151
- string[] authHeaderParts = authHeader.Split(' ');
152
- if (authHeaderParts?.Length == 2 && authHeaderParts[0].Equals("Bearer", StringComparison.InvariantCultureIgnoreCase))
153
- {
154
- if (authHeaderParts[1].TryParseJwt(out Jwt jwt))
155
- {
156
- var ipsWhitelist = jwt.Claims.GetValueOrDefault("client_IpWhitelist", "");
157
- IEnumerable<string> ips = ipsWhitelist
158
- .Split(new char[] { ';', ',' }, StringSplitOptions.RemoveEmptyEntries)
159
- .Select(p => p.Trim());
160
-
161
- if(string.IsNullOrEmpty(ipsWhitelist) || ips.Contains(context.Request.IpAddress))
162
- {
163
- ipAddressValid = true;
164
- }
165
- }
166
- }
167
- }
168
- else
169
- {
170
- ipAddressValid = true;
171
- }
172
-
173
- return ipAddressValid.ToString();
174
- }</value>
175
- </set-header>`;
176
- const checkFilterValid = `
177
- <choose>
178
- <when condition="@(context.Request.Headers.GetValueOrDefault("IpAddressValidation", "").Equals(Boolean.FalseString))">
179
- <return-response>
180
- <set-status code="403" reason="Forbidden"/>
181
- <set-body>@{
182
- return new JObject(
183
- new JProperty("message","IP does not match")
184
- ).ToString();
185
- }</set-body>
186
- </return-response>
187
- </when>
188
- </choose>`;
189
- return `
190
- ${getFilterStatus}
191
- ${checkFilterValid}
192
- `;
193
- };
194
- const getIpWhitelistPolicy = ({ ipAddresses }) => {
195
- const policy = `<ip-filter action="allow">\r\n${ipAddresses
196
- .map((ip) => {
197
- if (ip.includes("/")) {
198
- const range = (0, Helper_1.getIpsRange)(ip);
199
- return `<address-range from="${range.first}" to="${range.last}" />`;
200
- }
201
- return `<address>${ip}</address>`;
202
- })
203
- .join("\r\n")}\r\n</ip-filter>`;
204
- return policy;
205
- };
206
- var SetHeaderTypes;
207
- (function (SetHeaderTypes) {
208
- SetHeaderTypes["delete"] = "delete";
209
- SetHeaderTypes["override"] = "override";
210
- SetHeaderTypes["skip"] = "skip";
211
- SetHeaderTypes["append"] = "append";
212
- })(SetHeaderTypes || (exports.SetHeaderTypes = SetHeaderTypes = {}));
213
- const setHeader = ({ name, type = SetHeaderTypes.delete, value, }) => {
214
- let rs = `<set-header name="${name}" exists-action="${type}">`;
215
- if (value) {
216
- rs += ` <value>${value}</value>`;
217
- }
218
- rs += "</set-header>";
219
- return rs;
220
- };
221
- const checkHeaderPolicy = ({ checkHeaders }) => {
222
- return checkHeaders
223
- .map((c) => {
224
- return `<check-header name="${c.name}" failed-check-httpcode="401" failed-check-error-message="The header ${c.name} is not found" ignore-case="true">
225
- ${c.value ? c.value.map((v) => `<value>${v}</value>`).join("\n") : ""}
226
- </check-header>`;
227
- })
228
- .join("\n");
229
- };
230
- /** Set Client IP address to 'x-ts-client-ip' header key */
231
- const setClientIpHeader = (key = `x-${StackEnv_1.organization}-clientIp`) => setHeader({
232
- name: key,
233
- value: "@(context.Request.IpAddress)",
234
- type: SetHeaderTypes.override,
235
- });
236
- const setFindAndReplaces = (findAndReplaces) => findAndReplaces
237
- .map((f) => ` <find-and-replace from="${f.from}" to="${f.to}" />`)
238
- .join("\n");
239
- const getPolicies = ({ enableClientIpHeader = false, findAndReplaces, ...props }) => {
240
- const inbound = new Array();
241
- const outbound = new Array();
242
- const getProps = (p) => (typeof p === "boolean" ? {} : p);
243
- if (enableClientIpHeader) {
244
- inbound.push(setClientIpHeader());
245
- }
246
- if (props.setBaseUrl) {
247
- inbound.push(setBaseUrl(props.setBaseUrl));
248
- }
249
- if (props.rewriteUri) {
250
- inbound.push(getInRewriteUri(getProps(props.rewriteUri)));
251
- }
252
- if (props.cache) {
253
- inbound.push(getInCache());
254
- outbound.push(getOutCache(getProps(props.cache)));
255
- }
256
- if (props.mockResponse) {
257
- inbound.push(getInMockResponse(getProps(props.mockResponse)));
258
- }
259
- if (props.rateLimit) {
260
- inbound.push(getInRateLimit(getProps(props.rateLimit)));
261
- }
262
- if (props.backendCert) {
263
- inbound.push(getInBackendCert(props.backendCert));
264
- }
265
- if (props.cors) {
266
- inbound.push(getCorsPolicy(getProps(props.cors)));
267
- }
268
- if (props.ipFilter) {
269
- inbound.push(getIPAddressFilterPolicy());
270
- }
271
- if (props.whitelistIPs) {
272
- inbound.push(getIpWhitelistPolicy({ ipAddresses: props.whitelistIPs }));
273
- }
274
- if (props.setHeaders) {
275
- const array = Array.isArray(props.setHeaders)
276
- ? props.setHeaders
277
- : [props.setHeaders];
278
- array.forEach((s) => inbound.push(setHeader(s)));
279
- }
280
- if (props.checkHeaders) {
281
- inbound.push(checkHeaderPolicy(props.checkHeaders));
282
- }
283
- if (findAndReplaces) {
284
- outbound.push(setFindAndReplaces(findAndReplaces));
285
- }
286
- if (props.customInboundPolicy) {
287
- inbound.push(props.customInboundPolicy);
288
- }
289
- if (props.customOutPolicy) {
290
- outbound.push(props.customOutPolicy);
291
- }
292
- //======This always in the last position.===========
293
- if (props.clientCert) {
294
- inbound.push(getInClientCertValidate(props.clientCert));
295
- }
296
- let backend = "<base />";
297
- if (!props.mockResponse) {
298
- backend =
299
- '<forward-request timeout="120" follow-redirects="true" buffer-request-body="true" fail-on-error-status-code="true"/>';
300
- }
301
- return `<policies>
302
- <inbound>
303
- <base />
304
- ${inbound.join("\n")}
305
- </inbound>
306
- <backend>
307
- ${backend}
308
- </backend>
309
- <outbound>
310
- <base />
311
- <set-header name="Strict-Transport-Security" exists-action="override">
312
- <value>max-age=15724800; includeSubDomains</value>
313
- </set-header>
314
- <set-header name="X-XSS-Protection" exists-action="override">
315
- <value>1; mode=block</value>
316
- </set-header>
317
- <set-header name="Content-Security-Policy" exists-action="override">
318
- <value>default-src 'self' data: 'unsafe-inline' 'unsafe-eval'</value>
319
- </set-header>
320
- <set-header name="X-Frame-Options" exists-action="override">
321
- <value>Deny</value>
322
- </set-header>
323
- <set-header name="X-Content-Type-Options" exists-action="override">
324
- <value>nosniff</value>
325
- </set-header>
326
- <set-header name="Expect-Ct" exists-action="override">
327
- <value>max-age=604800,enforce</value>
328
- </set-header>
329
- <set-header name="Cache-Control" exists-action="override">
330
- <value>none</value>
331
- </set-header>
332
- <set-header name="X-Powered-By" exists-action="delete" />
333
- <set-header name="X-AspNet-Version" exists-action="delete" />
334
-
335
- ${outbound.join("\n")}
336
- ${enableApimEventHub && props.logEventHubName
337
- ? getEventHubPolicy({
338
- eventHubName: props.logEventHubName,
339
- azFuncUrl: props.azFuncUrl,
340
- azFuncKey: props.azFuncKey,
341
- captureClientCertThumbprint: props.captureClientCertThumbprint,
342
- })
343
- : ""}
344
- </outbound>
345
- <on-error>
346
- <base />
347
- ${enableApimEventHub && props.logEventHubName
348
- ? getEventHubPolicy({
349
- eventHubName: props.logEventHubName,
350
- azFuncUrl: props.azFuncUrl,
351
- azFuncKey: props.azFuncKey,
352
- captureClientCertThumbprint: props.captureClientCertThumbprint,
353
- })
354
- : ""}
355
- </on-error>
356
- </policies>`;
357
- };
358
- exports.getPolicies = getPolicies;
359
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9saWN5QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BcGltL0FwaVByb2R1Y3QvUG9saWN5QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFBOEM7QUFDOUMsOENBQWdEO0FBQ2hELG9EQUFxRDtBQUVyRCxNQUFNLGdCQUFnQixHQUFHLGdCQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzFDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0FBT2pDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUN6QixJQUFJLEdBQUcsR0FBRyxFQUNWLFdBQVcsR0FBRyxXQUFXLEdBQ2YsRUFBRSxFQUFFLENBQ2QscUNBQXFDLElBQUksbUJBQW1CLFdBQVcsTUFBTSxDQUFDO0FBTWhGLE1BQU0sZUFBZSxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsR0FBRyxFQUFtQixFQUFFLEVBQUUsQ0FDOUQsZ0NBQWdDLFFBQVEsTUFBTSxDQUFDO0FBTWpELE1BQU0sVUFBVSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQWdCLEVBQUUsRUFBRSxDQUMzQyxxQ0FBcUMsR0FBRyxNQUFNLENBQUM7QUFXakQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxFQUN0QixJQUFJLEdBQUcsZ0JBQWdCLEVBQUUsdUJBQXVCO0FBQ2hELE1BQU0sR0FBRyxFQUFFLEVBQUUsVUFBVTtBQUN2QixvQkFBb0IsR0FDTCxFQUFFLEVBQUUsQ0FDbkIsb0JBQW9CO0lBQ2xCLENBQUMsQ0FBQyxtQ0FBbUMsSUFBSTs4QkFDZixNQUFNOztnSEFFNEU7SUFDNUcsQ0FBQyxDQUFDLG1DQUFtQyxJQUFJOzhCQUNmLE1BQU07MERBQ3NCLENBQUM7QUFFM0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQ3RCOzs7O2dEQUk4QyxDQUFDO0FBS2pELE1BQU0sV0FBVyxHQUFHLENBQUMsRUFBRSxRQUFRLEdB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
@@ -1,8 +0,0 @@
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>;
@@ -1,63 +0,0 @@
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
@@ -1,9 +0,0 @@
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;
@@ -1,21 +0,0 @@
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
- const api = (0, Api_1.createApi)({
13
- name,
14
- apimInfo,
15
- product,
16
- subscriptionRequired,
17
- ...others,
18
- });
19
- return { product, ...api };
20
- };
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvQXBpbS9BcGlQcm9kdWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdUNBQXdEO0FBQ3hELCtCQUE0QztBQUk1QyxrQkFBZSxLQUFLLEVBQUUsRUFDcEIsSUFBSSxFQUNKLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsU0FBUyxFQUNULEdBQUcsTUFBTSxFQUNILEVBQUUsRUFBRTtJQUNWLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx1QkFBYSxFQUFDO1FBQ2xDLElBQUk7UUFDSixRQUFRO1FBQ1IsU0FBUztRQUNULG9CQUFvQjtLQUNyQixDQUFDLENBQUM7SUFFSCxNQUFNLEdBQUcsR0FBRyxJQUFBLGVBQVMsRUFBQztRQUNwQixJQUFJO1FBQ0osUUFBUTtRQUNSLE9BQU87UUFDUCxvQkFBb0I7UUFDcEIsR0FBRyxNQUFNO0tBQ1YsQ0FBQyxDQUFDO0lBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQzdCLENBQUMsQ0FBQyJ9
@@ -1,20 +0,0 @@
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;
@@ -1,27 +0,0 @@
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==
package/Apim/index.d.ts DELETED
@@ -1,22 +0,0 @@
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, alertEmail, ...others }: Props) => {
19
- apim: import("@pulumi/azure-native/apimanagement/apiManagementService").ApiManagementService;
20
- toApimInfo: () => ApimInfo;
21
- };
22
- export default _default;