@drunk-pulumi/azure 0.0.42 → 0.0.44

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 (197) 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.d.ts +4 -11
  12. package/Apps/LogicApp.js +33 -11
  13. package/Automation/index.js +29 -3
  14. package/AzAd/B2C.js +25 -2
  15. package/AzAd/EnvRoles.Consts.d.ts +1 -1
  16. package/AzAd/EnvRoles.Consts.js +38 -35
  17. package/AzAd/EnvRoles.js +5 -2
  18. package/AzAd/Group.d.ts +1 -1
  19. package/AzAd/Group.js +25 -2
  20. package/AzAd/Identities/AzDevOpsIdentity.js +5 -2
  21. package/AzAd/Identities/AzDevOpsManagedIdentity.js +5 -2
  22. package/AzAd/Identities/AzUserAdRevertSync.js +5 -2
  23. package/AzAd/Identities/index.js +7 -4
  24. package/AzAd/Identity.js +26 -3
  25. package/AzAd/Role.js +5 -2
  26. package/AzAd/RoleAssignment.d.ts +1 -1
  27. package/AzAd/RoleAssignment.js +40 -32
  28. package/AzAd/RoleDefinitions/JustInTimeRequestRole.js +25 -2
  29. package/AzAd/UserAssignedIdentity.js +25 -2
  30. package/Builder/AksBuilder.js +6 -3
  31. package/Builder/ApimApiBuilder.d.ts +22 -0
  32. package/Builder/ApimApiBuilder.js +198 -0
  33. package/Builder/ApimBuilder.d.ts +3 -0
  34. package/Builder/ApimBuilder.js +329 -0
  35. package/Builder/ApimPolicyBuilder.d.ts +51 -0
  36. package/Builder/ApimPolicyBuilder.js +384 -0
  37. package/Builder/ApimProductBuilder.d.ts +21 -0
  38. package/Builder/ApimProductBuilder.js +153 -0
  39. package/Builder/ApimRootBuilder.d.ts +9 -0
  40. package/Builder/ApimRootBuilder.js +26 -0
  41. package/Builder/ApimWorkspaceBuilder.d.ts +10 -0
  42. package/Builder/ApimWorkspaceBuilder.js +57 -0
  43. package/Builder/CdnBuilder.d.ts +13 -0
  44. package/Builder/CdnBuilder.js +39 -0
  45. package/Builder/DnsZoneBuilder.js +37 -16
  46. package/Builder/PrivateDnsZoneBuilder.js +48 -24
  47. package/Builder/ResourceBuilder.js +20 -6
  48. package/Builder/SqlBuilder.js +5 -6
  49. package/Builder/StorageBuilder.d.ts +3 -0
  50. package/Builder/StorageBuilder.js +101 -0
  51. package/Builder/VaultBuilder.js +25 -3
  52. package/Builder/VmBuilder.js +16 -3
  53. package/Builder/VnetBuilder.js +44 -33
  54. package/Builder/index.d.ts +4 -0
  55. package/Builder/index.js +21 -10
  56. package/Builder/types/apimBuilder.d.ts +70 -0
  57. package/Builder/types/apimBuilder.js +3 -0
  58. package/Builder/types/apimPolicyBuilder.d.ts +84 -0
  59. package/Builder/types/apimPolicyBuilder.js +11 -0
  60. package/Builder/types/apimProductBuilder.d.ts +56 -0
  61. package/Builder/types/apimProductBuilder.js +3 -0
  62. package/Builder/types/apimWorkspaceBuilder.d.ts +2 -0
  63. package/Builder/types/apimWorkspaceBuilder.js +3 -0
  64. package/Builder/types/askBuilder.d.ts +2 -6
  65. package/Builder/types/cdnBuilder.d.ts +7 -0
  66. package/Builder/types/cdnBuilder.js +3 -0
  67. package/Builder/types/genericBuilder.d.ts +5 -5
  68. package/Builder/types/genericBuilder.js +1 -1
  69. package/Builder/types/index.d.ts +6 -0
  70. package/Builder/types/index.js +7 -1
  71. package/Builder/types/resourceBuilder.d.ts +3 -1
  72. package/Builder/types/storageBuilder.d.ts +24 -0
  73. package/Builder/types/storageBuilder.js +3 -0
  74. package/Builder/types/vmBuilder.d.ts +4 -2
  75. package/Builder/types/vnetBuilder.d.ts +4 -1
  76. package/Cdn/CdnEndpoint.d.ts +13 -0
  77. package/Cdn/CdnEndpoint.js +94 -0
  78. package/{Storage → Cdn}/CdnRules.d.ts +2 -2
  79. package/Cdn/CdnRules.js +133 -0
  80. package/Cdn/index.d.ts +7 -6
  81. package/Cdn/index.js +45 -33
  82. package/Certificate/index.js +27 -4
  83. package/Certificate/p12.js +25 -2
  84. package/Common/AzureEnv.d.ts +1 -2
  85. package/Common/AzureEnv.js +25 -2
  86. package/Common/ConfigHelper.js +25 -2
  87. package/Common/GlobalEnv.d.ts +2 -7
  88. package/Common/GlobalEnv.js +12 -5
  89. package/Common/Helpers.d.ts +13 -0
  90. package/Common/Helpers.js +43 -5
  91. package/Common/Naming/index.d.ts +3 -2
  92. package/Common/Naming/index.js +10 -7
  93. package/Common/ResourceEnv.d.ts +1 -11
  94. package/Common/ResourceEnv.js +24 -20
  95. package/Common/StackEnv.js +25 -2
  96. package/Common/index.js +29 -6
  97. package/ContainerRegistry/Helper.js +29 -3
  98. package/ContainerRegistry/index.d.ts +2 -2
  99. package/ContainerRegistry/index.js +37 -12
  100. package/Core/Locker.js +25 -2
  101. package/Core/Random.js +25 -2
  102. package/Core/ResourceCreator.js +5 -2
  103. package/Core/ResourceGroup.js +5 -2
  104. package/CosmosDb/index.js +29 -3
  105. package/CustomRoles/index.js +25 -2
  106. package/IOT/Hub/index.js +25 -2
  107. package/KeyVault/Helper.js +25 -2
  108. package/KeyVault/index.d.ts +5 -9
  109. package/KeyVault/index.js +40 -12
  110. package/Logs/AppInsight.d.ts +4 -4
  111. package/Logs/AppInsight.js +35 -9
  112. package/Logs/Helpers.d.ts +12 -9
  113. package/Logs/Helpers.js +57 -14
  114. package/Logs/LogAnalytics.js +25 -2
  115. package/Logs/WebTest.d.ts +1 -1
  116. package/Logs/WebTest.js +35 -12
  117. package/Logs/index.d.ts +1 -10
  118. package/Logs/index.js +36 -8
  119. package/MySql/index.d.ts +2 -9
  120. package/MySql/index.js +43 -13
  121. package/Postgresql/index.d.ts +2 -9
  122. package/Postgresql/index.js +42 -13
  123. package/RedisCache/index.d.ts +9 -5
  124. package/RedisCache/index.js +66 -32
  125. package/ServiceBus/index.d.ts +2 -6
  126. package/ServiceBus/index.js +39 -15
  127. package/SignalR/index.d.ts +2 -2
  128. package/SignalR/index.js +49 -29
  129. package/Sql/SqlDb.js +25 -2
  130. package/Sql/index.d.ts +3 -8
  131. package/Sql/index.js +57 -30
  132. package/Storage/Helper.js +25 -2
  133. package/Storage/ManagementRules.js +25 -2
  134. package/Storage/index.d.ts +37 -39
  135. package/Storage/index.js +69 -97
  136. package/VM/AzureDevOpsExtension.js +5 -2
  137. package/VM/Extension.js +25 -2
  138. package/VM/GlobalSchedule.js +25 -2
  139. package/VM/index.d.ts +7 -6
  140. package/VM/index.js +32 -6
  141. package/VNet/Bastion.js +29 -3
  142. package/VNet/Firewall.js +31 -5
  143. package/VNet/FirewallPolicies/index.js +8 -5
  144. package/VNet/FirewallPolicy.js +25 -2
  145. package/VNet/GlobalNetworkPeering.js +25 -2
  146. package/VNet/Helper.d.ts +2 -2
  147. package/VNet/Helper.js +32 -12
  148. package/VNet/IpAddress.js +30 -4
  149. package/VNet/IpAddressPrefix.js +30 -4
  150. package/VNet/NSGRules/ApimSecurityRule.d.ts +7 -0
  151. package/VNet/NSGRules/ApimSecurityRule.js +34 -0
  152. package/VNet/NSGRules/AzADSecurityRule.d.ts +2 -2
  153. package/VNet/NSGRules/AzADSecurityRule.js +2 -2
  154. package/VNet/NSGRules/BastionSecurityRule.d.ts +1 -2
  155. package/VNet/NSGRules/BastionSecurityRule.js +2 -2
  156. package/VNet/NSGRules/index.d.ts +4 -0
  157. package/VNet/NSGRules/index.js +15 -0
  158. package/VNet/NatGateway.js +25 -2
  159. package/VNet/NetworkPeering.js +25 -2
  160. package/VNet/PrivateEndpoint.d.ts +6 -6
  161. package/VNet/PrivateEndpoint.js +34 -10
  162. package/VNet/RouteTable.js +25 -2
  163. package/VNet/SecurityGroup.js +25 -2
  164. package/VNet/Subnet.js +25 -2
  165. package/VNet/VPNGateway.js +29 -3
  166. package/VNet/VirtualWAN.js +29 -3
  167. package/VNet/Vnet.d.ts +2 -2
  168. package/VNet/Vnet.js +35 -6
  169. package/VNet/index.d.ts +3 -0
  170. package/VNet/index.js +34 -8
  171. package/Web/AppCertOrder.js +29 -3
  172. package/Web/AppConfig.d.ts +9 -12
  173. package/Web/AppConfig.js +51 -35
  174. package/Web/AppGateway.js +29 -3
  175. package/Web/FuncApp.js +25 -2
  176. package/Web/Helpers.js +25 -2
  177. package/Web/WebAppPlan.js +25 -2
  178. package/index.d.ts +1 -0
  179. package/index.js +18 -0
  180. package/package.json +5 -4
  181. package/types.d.ts +19 -16
  182. package/z_tests/_tools/Mocks.js +25 -2
  183. package/Apim/ApiProduct/Api.d.ts +0 -35
  184. package/Apim/ApiProduct/Api.js +0 -131
  185. package/Apim/ApiProduct/PolicyBuilder.d.ts +0 -79
  186. package/Apim/ApiProduct/PolicyBuilder.js +0 -359
  187. package/Apim/ApiProduct/Product.d.ts +0 -8
  188. package/Apim/ApiProduct/Product.js +0 -63
  189. package/Apim/ApiProduct/index.d.ts +0 -9
  190. package/Apim/ApiProduct/index.js +0 -21
  191. package/Apim/HookProxy/index.d.ts +0 -20
  192. package/Apim/HookProxy/index.js +0 -27
  193. package/Apim/index.d.ts +0 -22
  194. package/Apim/index.js +0 -115
  195. package/Storage/CdnEndpoint.d.ts +0 -12
  196. package/Storage/CdnEndpoint.js +0 -61
  197. package/Storage/CdnRules.js +0 -134
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const apim = __importStar(require("@pulumi/azure-native/apimanagement"));
30
+ const types_1 = require("@pulumi/azure-native/types");
31
+ const pulumi_1 = require("@pulumi/pulumi");
32
+ const SwaggerHelper_1 = require("../Apim/ApiProduct/SwaggerHelper");
33
+ const StackEnv_1 = require("../Common/StackEnv");
34
+ const ApimPolicyBuilder_1 = __importDefault(require("./ApimPolicyBuilder"));
35
+ const types_2 = require("./types");
36
+ class ApimApiRevisionBuilder {
37
+ version;
38
+ revisions = [];
39
+ constructor(version) {
40
+ this.version = version;
41
+ }
42
+ withRevision(props) {
43
+ this.revisions.push(props);
44
+ return this;
45
+ }
46
+ }
47
+ class ApimApiBuilder extends types_2.BuilderAsync {
48
+ props;
49
+ _serviceUrl = undefined;
50
+ _keyParameters = {
51
+ header: "x-api-key",
52
+ query: "api-key",
53
+ };
54
+ _apis = {};
55
+ _apiInstanceName;
56
+ _apiSets = {};
57
+ _policyString = undefined;
58
+ constructor(props) {
59
+ super(props);
60
+ this.props = props;
61
+ this._apiInstanceName = `${props.name}-api`;
62
+ //Empty Policy
63
+ this._policyString = new ApimPolicyBuilder_1.default({
64
+ ...props,
65
+ name: this._apiInstanceName,
66
+ }).build();
67
+ }
68
+ withPolicies(props) {
69
+ this._policyString = props(new ApimPolicyBuilder_1.default({
70
+ ...this.props,
71
+ name: this._apiInstanceName,
72
+ })).build();
73
+ return this;
74
+ }
75
+ withServiceUrl(props) {
76
+ this._serviceUrl = props;
77
+ return this;
78
+ }
79
+ withVersion(version, builder) {
80
+ const b = new ApimApiRevisionBuilder(version);
81
+ builder(b);
82
+ this._apis[version] = b.revisions;
83
+ return this;
84
+ }
85
+ withKeys(props) {
86
+ this._keyParameters = props;
87
+ return this;
88
+ }
89
+ async buildApis() {
90
+ const date = new Date();
91
+ const tasks = Object.keys(this._apis).map((k) => {
92
+ const setName = `${this._apiInstanceName}-v${k}`;
93
+ //Create ApiSet
94
+ const apiSet = new apim.ApiVersionSet(setName, {
95
+ versionSetId: setName,
96
+ displayName: setName,
97
+ description: setName,
98
+ serviceName: this.props.apimServiceName,
99
+ resourceGroupName: this.props.group.resourceGroupName,
100
+ versioningScheme: types_1.enums.apimanagement.VersioningScheme.Segment,
101
+ }, { dependsOn: this.props.dependsOn, deleteBeforeReplace: true });
102
+ this._apiSets[k] = apiSet;
103
+ //Create Api
104
+ const revisions = this._apis[k];
105
+ return revisions.map(async (rv, index) => {
106
+ const apiName = `${setName};rev=${rv.revision}`;
107
+ const api = new apim.Api(apiName, {
108
+ apiId: apiName,
109
+ displayName: apiName,
110
+ description: apiName,
111
+ serviceName: this.props.apimServiceName,
112
+ resourceGroupName: this.props.group.resourceGroupName,
113
+ apiType: types_1.enums.apimanagement.ApiType.Http,
114
+ isCurrent: index === revisions.length - 1,
115
+ protocols: [types_1.enums.apimanagement.Protocol.Https],
116
+ subscriptionRequired: this.props.requiredSubscription,
117
+ apiVersion: k,
118
+ apiVersionDescription: k,
119
+ apiRevision: rv.revision.toString(),
120
+ apiRevisionDescription: `${apiName} ${date.toLocaleDateString()}`,
121
+ apiVersionSetId: apiSet.id,
122
+ subscriptionKeyParameterNames: this._keyParameters,
123
+ path: this._serviceUrl.apiPath,
124
+ serviceUrl: `${this._serviceUrl.serviceUrl}/${k}`,
125
+ format: "swaggerUrl" in rv
126
+ ? types_1.enums.apimanagement.ContentFormat.Openapi_json
127
+ : undefined,
128
+ value: "swaggerUrl" in rv
129
+ ? await (0, SwaggerHelper_1.getImportConfig)(rv.swaggerUrl, k)
130
+ : undefined,
131
+ }, { dependsOn: apiSet, deleteBeforeReplace: true });
132
+ //Link API to Product
133
+ new apim.ProductApi(apiName, {
134
+ serviceName: this.props.apimServiceName,
135
+ resourceGroupName: this.props.group.resourceGroupName,
136
+ productId: this.props.productId,
137
+ apiId: apiName,
138
+ }, { dependsOn: api });
139
+ //Apply Policy for the API
140
+ if (this._policyString) {
141
+ new apim.ApiPolicy(`${apiName}-policy`, {
142
+ serviceName: this.props.apimServiceName,
143
+ resourceGroupName: this.props.group.resourceGroupName,
144
+ apiId: apiName,
145
+ policyId: "policy",
146
+ format: "xml",
147
+ value: this._policyString,
148
+ }, { dependsOn: api });
149
+ }
150
+ //Create Aoi Operations
151
+ if ("operations" in rv) {
152
+ rv.operations.forEach((op) => {
153
+ const opsName = `${apiName}-${op.name}`;
154
+ const ops = new apim.ApiOperation(opsName, {
155
+ operationId: opsName,
156
+ apiId: api.id,
157
+ displayName: opsName,
158
+ description: opsName,
159
+ serviceName: this.props.apimServiceName,
160
+ resourceGroupName: this.props.group.resourceGroupName,
161
+ ...op,
162
+ }, { dependsOn: api });
163
+ //Mock Operations
164
+ const opName = `${opsName}-policy`;
165
+ new apim.ApiOperationPolicy(opName, {
166
+ policyId: "policy",
167
+ operationId: ops.id,
168
+ apiId: api.id,
169
+ serviceName: this.props.apimServiceName,
170
+ resourceGroupName: this.props.group.resourceGroupName,
171
+ format: "xml",
172
+ value: new ApimPolicyBuilder_1.default({
173
+ ...this.props,
174
+ name: opName,
175
+ })
176
+ .mockResponse({
177
+ code: 200,
178
+ contentType: `Welcome to ${StackEnv_1.organization}`,
179
+ })
180
+ .build(),
181
+ }, { dependsOn: ops, deleteBeforeReplace: true });
182
+ });
183
+ }
184
+ });
185
+ });
186
+ await Promise.all(tasks);
187
+ }
188
+ async build() {
189
+ await this.buildApis();
190
+ return {
191
+ resourceName: this._apiInstanceName,
192
+ group: this.props.group,
193
+ id: (0, pulumi_1.interpolate) `${this.props.productId}`,
194
+ };
195
+ }
196
+ }
197
+ exports.default = ApimApiBuilder;
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbUFwaUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltQXBpQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELHNEQUFtRDtBQUNuRCwyQ0FBb0Q7QUFDcEQsb0VBQW1FO0FBQ25FLGlEQUFrRDtBQUVsRCw0RUFBb0Q7QUFFcEQsbUNBV2lCO0FBRWpCLE1BQU0sc0JBQXNCO0lBRUE7SUFEbkIsU0FBUyxHQUEyQixFQUFFLENBQUM7SUFDOUMsWUFBMEIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0lBQzdDLFlBQVksQ0FBQyxLQUEyQjtRQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FDRjtBQUVELE1BQXFCLGNBQ25CLFNBQVEsb0JBQTBCO0lBZXhCO0lBWkYsV0FBVyxHQUFzQyxTQUFTLENBQUM7SUFDM0QsY0FBYyxHQUFnQztRQUNwRCxNQUFNLEVBQUUsV0FBVztRQUNuQixLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFDO0lBQ00sS0FBSyxHQUEyQyxFQUFFLENBQUM7SUFFbkQsZ0JBQWdCLENBQVM7SUFDekIsUUFBUSxHQUF1QyxFQUFFLENBQUM7SUFDbEQsYUFBYSxHQUF1QixTQUFTLENBQUM7SUFFdEQsWUFDVSxLQUdQO1FBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBTEwsVUFBSyxHQUFMLEtBQUssQ0FHWjtRQUdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQztRQUM1QyxjQUFjO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDJCQUFpQixDQUFDO1lBQ3pDLEdBQUcsS0FBSztZQUNSLElBQUksRUFBRSxJ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
@@ -0,0 +1,3 @@
1
+ import { BuilderProps, IApimSkuBuilder } from "./types";
2
+ declare const _default: (props: BuilderProps) => IApimSkuBuilder;
3
+ export default _default;
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const types_1 = require("./types");
30
+ const apimanagement = __importStar(require("@pulumi/azure-native/apimanagement"));
31
+ const Naming_1 = require("../Common/Naming");
32
+ const StackEnv_1 = require("../Common/StackEnv");
33
+ const azure_providers_1 = require("@drunk-pulumi/azure-providers");
34
+ const Random_1 = require("../Core/Random");
35
+ const IpAddress_1 = __importDefault(require("../VNet/IpAddress"));
36
+ const Identity_1 = __importDefault(require("../AzAd/Identity"));
37
+ const AzureEnv_1 = require("../Common/AzureEnv");
38
+ const pulumi_1 = require("@pulumi/pulumi");
39
+ const PrivateEndpoint_1 = __importDefault(require("../VNet/PrivateEndpoint"));
40
+ class ApimBuilder extends types_1.Builder {
41
+ _insightLog = undefined;
42
+ _publisher = undefined;
43
+ _proxyDomain = undefined;
44
+ _sku = undefined;
45
+ _additionalLocations = [];
46
+ _zones = undefined;
47
+ _restoreFromDeleted = false;
48
+ _enableEntraID = false;
49
+ _disableSignIn = false;
50
+ _apimVnet = undefined;
51
+ _privateLink = undefined;
52
+ _rootCerts = [];
53
+ _caCerts = [];
54
+ _auths = [];
55
+ _instanceName = undefined;
56
+ _ipAddressInstances = {};
57
+ _apimInstance = undefined;
58
+ constructor(props) {
59
+ super(props);
60
+ }
61
+ disableSignIn() {
62
+ this._disableSignIn = true;
63
+ return this;
64
+ }
65
+ withAuth(props) {
66
+ this._auths.push(props);
67
+ this._disableSignIn = false;
68
+ return this;
69
+ }
70
+ withEntraID() {
71
+ this._enableEntraID = true;
72
+ this._disableSignIn = false;
73
+ return this;
74
+ }
75
+ withCACert(props) {
76
+ this._caCerts.push(props);
77
+ return this;
78
+ }
79
+ withRootCert(props) {
80
+ this._rootCerts.push(props);
81
+ return this;
82
+ }
83
+ withPrivateLink(props) {
84
+ this._privateLink = props;
85
+ return this;
86
+ }
87
+ withSubnet(props) {
88
+ this._apimVnet = props;
89
+ return this;
90
+ }
91
+ restoreFomDeleted() {
92
+ this._restoreFromDeleted = true;
93
+ return this;
94
+ }
95
+ withZones(props) {
96
+ this._zones = props;
97
+ return this;
98
+ }
99
+ withAdditionalLocation(props) {
100
+ this._additionalLocations.push(props);
101
+ return this;
102
+ }
103
+ withInsightLog(props) {
104
+ this._insightLog = props;
105
+ return this;
106
+ }
107
+ withProxyDomain(props) {
108
+ this._proxyDomain = props;
109
+ return this;
110
+ }
111
+ withPublisher(props) {
112
+ this._publisher = props;
113
+ return this;
114
+ }
115
+ withSku(props) {
116
+ this._sku = props;
117
+ return this;
118
+ }
119
+ buildPublicIpAddress() {
120
+ if (!this._apimVnet)
121
+ return;
122
+ const ipPros = {
123
+ ...this.commonProps,
124
+ name: `${this.commonProps.name}-apim`,
125
+ enableZone: this._sku.sku === "Premium",
126
+ };
127
+ this._ipAddressInstances[this.commonProps.name] = (0, IpAddress_1.default)(ipPros);
128
+ if (this._additionalLocations) {
129
+ this._additionalLocations.forEach((j) => {
130
+ this._ipAddressInstances[j.location] = (0, IpAddress_1.default)({
131
+ ...ipPros,
132
+ name: `${this.commonProps.name}-${j.location}-apim`,
133
+ });
134
+ });
135
+ }
136
+ }
137
+ buildAPIM() {
138
+ this._instanceName = (0, Naming_1.getApimName)(this.commonProps.name);
139
+ const sku = {
140
+ name: this._sku.sku,
141
+ capacity: this._sku.sku === "Consumption" ? 0 : this._sku.capacity ?? 1,
142
+ };
143
+ const zones = sku.name === "Premium" ? this._zones : undefined;
144
+ this._apimInstance = new apimanagement.ApiManagementService(this._instanceName, {
145
+ serviceName: this._instanceName,
146
+ ...this.commonProps.group,
147
+ publisherEmail: this._publisher.publisherEmail,
148
+ publisherName: this._publisher.publisherName ?? StackEnv_1.organization,
149
+ notificationSenderEmail: this._publisher?.notificationSenderEmail ??
150
+ "apimgmt-noreply@mail.windowsazure.com",
151
+ identity: { type: "SystemAssigned" },
152
+ sku,
153
+ certificates: [
154
+ ...this._rootCerts.map((c) => ({
155
+ encodedCertificate: c.certificate,
156
+ certificatePassword: c.certificatePassword,
157
+ storeName: "Root",
158
+ })),
159
+ ...this._caCerts.map((c) => ({
160
+ encodedCertificate: c.certificate,
161
+ certificatePassword: c.certificatePassword,
162
+ storeName: "CertificateAuthority",
163
+ })),
164
+ ],
165
+ enableClientCertificate: true,
166
+ hostnameConfigurations: this._proxyDomain
167
+ ? [
168
+ {
169
+ type: "Proxy",
170
+ hostName: this._proxyDomain.domain,
171
+ encodedCertificate: this._proxyDomain.certificate,
172
+ certificatePassword: this._proxyDomain.certificatePassword,
173
+ negotiateClientCertificate: false,
174
+ defaultSslBinding: false,
175
+ },
176
+ ]
177
+ : undefined,
178
+ //Restore APIM from Deleted
179
+ restore: this._restoreFromDeleted,
180
+ //Only support when link to a virtual network
181
+ publicIpAddressId: this._apimVnet
182
+ ? this._ipAddressInstances[this.commonProps.name]?.id
183
+ : undefined,
184
+ publicNetworkAccess: this._privateLink?.disablePublicAccess
185
+ ? "Disabled"
186
+ : "Enabled",
187
+ //NATGateway
188
+ natGatewayState: this._apimVnet?.enableGateway ? "Enabled" : "Disabled",
189
+ virtualNetworkType: this._apimVnet?.type ?? "None",
190
+ virtualNetworkConfiguration: this._apimVnet
191
+ ? {
192
+ subnetResourceId: this._apimVnet.subnetId,
193
+ }
194
+ : undefined,
195
+ //Only available for Premium
196
+ zones,
197
+ //Only available for Premium
198
+ additionalLocations: sku.name === "Premium"
199
+ ? this._additionalLocations?.map((a) => ({
200
+ ...a,
201
+ sku,
202
+ zones,
203
+ }))
204
+ : undefined,
205
+ customProperties: {
206
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Protocols.Server.Http2": "true",
207
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Ssl30": "false",
208
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls10": "false",
209
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Backend.Protocols.Tls11": "false",
210
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA": "false",
211
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA": "false",
212
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA": "false",
213
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA": "false",
214
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA": "false",
215
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_CBC_SHA256": "false",
216
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_128_GCM_SHA256": "false",
217
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA": "false",
218
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TLS_RSA_WITH_AES_256_CBC_SHA256": "false",
219
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Ciphers.TripleDes168": "false",
220
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Ssl30": "false",
221
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls10": "false",
222
+ "Microsoft.WindowsAzure.ApiManagement.Gateway.Security.Protocols.Tls11": "false",
223
+ },
224
+ }, { dependsOn: this.commonProps.dependsOn, deleteBeforeReplace: true });
225
+ }
226
+ buildEntraID() {
227
+ if (!this._enableEntraID || this._disableSignIn)
228
+ return;
229
+ const identity = (0, Identity_1.default)({
230
+ ...this.commonProps,
231
+ name: `${this.commonProps.name}-apim`,
232
+ createClientSecret: true,
233
+ });
234
+ new apimanagement.IdentityProvider(this.commonProps.name, {
235
+ ...this.commonProps.group,
236
+ serviceName: this._apimInstance.name,
237
+ clientId: identity.clientId,
238
+ clientSecret: identity.clientSecret,
239
+ authority: (0, pulumi_1.interpolate) `https://login.microsoftonline.com/${AzureEnv_1.tenantId}/`,
240
+ type: "aad",
241
+ identityProviderName: "aad",
242
+ allowedTenants: [AzureEnv_1.tenantId],
243
+ signinTenant: AzureEnv_1.tenantId,
244
+ }, { dependsOn: this._apimInstance });
245
+ }
246
+ buildAuths() {
247
+ if (this._disableSignIn)
248
+ return;
249
+ this._auths.forEach((auth) => new apimanagement.IdentityProvider(`${this.commonProps.name}-${auth.type}`, {
250
+ ...this.commonProps.group,
251
+ ...auth,
252
+ identityProviderName: auth.type,
253
+ serviceName: this._apimInstance.name,
254
+ }, { dependsOn: this._apimInstance }));
255
+ }
256
+ buildDisableSigIn() {
257
+ if (!this._disableSignIn)
258
+ return;
259
+ //Turn off Sign up setting
260
+ new azure_providers_1.ApimSignUpSettingsResource(this._instanceName, {
261
+ ...this.commonProps.group,
262
+ serviceName: this._instanceName,
263
+ subscriptionId: AzureEnv_1.subscriptionId,
264
+ enabled: false,
265
+ termsOfService: {
266
+ consentRequired: false,
267
+ enabled: false,
268
+ text: "Terms & Conditions Of Service",
269
+ },
270
+ }, { dependsOn: this._apimInstance, deleteBeforeReplace: true });
271
+ //Turn of the SignIn setting
272
+ new azure_providers_1.ApimSignInSettingsResource(this._instanceName, {
273
+ ...this.commonProps.group,
274
+ serviceName: this._instanceName,
275
+ subscriptionId: AzureEnv_1.subscriptionId,
276
+ enabled: false,
277
+ }, { dependsOn: this._apimInstance, deleteBeforeReplace: true });
278
+ }
279
+ buildPrivateLink() {
280
+ if (!this._privateLink)
281
+ return;
282
+ (0, PrivateEndpoint_1.default)({
283
+ resourceInfo: {
284
+ resourceName: this._instanceName,
285
+ group: this.commonProps.group,
286
+ id: this._apimInstance.id,
287
+ },
288
+ privateDnsZoneName: "privatelink.azure-api.net",
289
+ subnetIds: this._privateLink.subnetIds,
290
+ linkServiceGroupIds: this._privateLink.type
291
+ ? [this._privateLink.type]
292
+ : ["Gateway"],
293
+ dependsOn: this._apimInstance,
294
+ });
295
+ }
296
+ buildInsightLog() {
297
+ if (!this._insightLog)
298
+ return;
299
+ //App Insight Logs
300
+ new apimanagement.Logger(`${this._instanceName}-insight`, {
301
+ serviceName: this._apimInstance.name,
302
+ ...this.commonProps.group,
303
+ loggerType: apimanagement.LoggerType.ApplicationInsights,
304
+ description: "App Insight Logger",
305
+ loggerId: (0, Random_1.randomUuId)(this._instanceName).result,
306
+ resourceId: this._insightLog.id,
307
+ credentials: {
308
+ //This credential will be add to NameValue automatically.
309
+ instrumentationKey: this._insightLog.instrumentationKey,
310
+ },
311
+ }, { dependsOn: this._apimInstance });
312
+ }
313
+ build() {
314
+ this.buildPublicIpAddress();
315
+ this.buildAPIM();
316
+ this.buildPrivateLink();
317
+ this.buildDisableSigIn();
318
+ this.buildEntraID();
319
+ this.buildAuths();
320
+ this.buildInsightLog();
321
+ return {
322
+ resourceName: this._instanceName,
323
+ group: this.commonProps.group,
324
+ id: this._apimInstance.id,
325
+ };
326
+ }
327
+ }
328
+ exports.default = (props) => new ApimBuilder(props);
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBZWlCO0FBRWpCLGtGQUFvRTtBQUNwRSw2Q0FBK0M7QUFDL0MsaURBQWtEO0FBQ2xELG1FQUd1QztBQUN2QywyQ0FBNEM7QUFHNUMsa0VBQTBDO0FBQzFDLGdFQUF3QztBQUN4QyxpREFBOEQ7QUFDOUQsMkNBQTZDO0FBQzdDLDhFQUFzRDtBQUV0RCxNQUFNLFdBQ0osU0FBUSxlQUFxQjtJQUdyQixXQUFXLEdBQStCLFNBQVMsQ0FBQztJQUNwRCxVQUFVLEdBQXlDLFNBQVMsQ0FBQztJQUM3RCxZQUFZLEdBQXNDLFNBQVMsQ0FBQztJQUM1RCxJQUFJLEdBQW1DLFNBQVMsQ0FBQztJQUNqRCxvQkFBb0IsR0FBaUMsRUFBRSxDQUFDO0lBQ3hELE1BQU0sR0FBNkIsU0FBUyxDQUFDO0lBQzdDLG1CQUFtQixHQUFZLEtBQUssQ0FBQztJQUNyQyxjQUFjLEdBQVksS0FBSyxDQUFDO0lBQ2hDLGNBQWMsR0FBWSxLQUFLLENBQUM7SUFDaEMsU0FBUyxHQUE2QixTQUFTLENBQUM7SUFDaEQsWUFBWSxHQUFvQyxTQUFTLENBQUM7SUFDMUQsVUFBVSxHQUEwQixFQUFFLENBQUM7SUFDdkMsUUFBUSxHQUEwQixFQUFFLENBQUM7SUFDckMsTUFBTSxHQUFtQixFQUFFLENBQUM7SUFFNUIsYUFBYSxHQUF1QixTQUFTLENBQUM7SUFDOUMsbUJBQW1CLEdBQTRDLEVBQUUsQ0FBQztJQUNsRSxhQUFhLEdBQ25CLFNBQVMsQ0FBQztJQUVaLFlBQW1CLEtBQW1CO1FBQ3BDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNmLENBQUM7SUFDTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLE9BQU8sSUFB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
@@ -0,0 +1,51 @@
1
+ import { ApimAuthCertType, ApimBaseUrlType, ApimCheckHeaderType, ApimClientCertType, ApimClientIpHeaderType, ApimCorsType, ApimFindAndReplaceType, ApimMockPropsType, ApimOutCacheType, ApimRateLimitType, ApimRewriteUriType, ApimSetHeaderType, ApimValidateJwtWhitelistIpType, ApimWhitelistIpType, IApimPolicyBuilder, ApimChildBuilderProps } from "./types";
2
+ export default class ApimPolicyBuilder implements IApimPolicyBuilder {
3
+ private props;
4
+ private _baseUrl;
5
+ private _rewriteUri;
6
+ private _rateLimit;
7
+ private _cacheOptions;
8
+ private _backendCert;
9
+ private _verifyClientCert;
10
+ private _cors;
11
+ private _validateJwtWhitelistIp;
12
+ private _mockResponses;
13
+ private _headers;
14
+ private _checkHeaders;
15
+ private _whitelistIps;
16
+ private _findAndReplaces;
17
+ private _inboundPolicies;
18
+ private _outboundPolicies;
19
+ constructor(props: ApimChildBuilderProps);
20
+ setBaseUrl(props: ApimBaseUrlType): IApimPolicyBuilder;
21
+ setHeader(props: ApimSetHeaderType): IApimPolicyBuilder;
22
+ checkHeader(props: ApimCheckHeaderType): IApimPolicyBuilder;
23
+ mockResponse(props: ApimMockPropsType): IApimPolicyBuilder;
24
+ rewriteUri(props: ApimRewriteUriType): IApimPolicyBuilder;
25
+ setRateLimit(props: ApimRateLimitType): IApimPolicyBuilder;
26
+ setCacheOptions(props: ApimOutCacheType): IApimPolicyBuilder;
27
+ setBackendCert(props: ApimAuthCertType): IApimPolicyBuilder;
28
+ verifyClientCert(props: ApimClientCertType): IApimPolicyBuilder;
29
+ setCors(props: ApimCorsType): IApimPolicyBuilder;
30
+ setClientIpHeader(props: ApimClientIpHeaderType): IApimPolicyBuilder;
31
+ /** Filter IP from Bearer Token */
32
+ validateJwtWhitelistIp(props: ApimValidateJwtWhitelistIpType): IApimPolicyBuilder;
33
+ /** IP Address Whitelisting */
34
+ setWhitelistIPs(props: ApimWhitelistIpType): IApimPolicyBuilder;
35
+ /**Replace outbound results */
36
+ setFindAndReplaces(props: ApimFindAndReplaceType): IApimPolicyBuilder;
37
+ private buildBaseUrl;
38
+ private buildHeaders;
39
+ private buildCheckHeaders;
40
+ private buildMockResponse;
41
+ private buildRewriteUri;
42
+ private buildRateLimit;
43
+ private buildCacheOptions;
44
+ private buildBackendCert;
45
+ private buildVerifyClientCert;
46
+ private buildCors;
47
+ private buildValidateJwtWhitelistIp;
48
+ private buildWhiteListIps;
49
+ private buildFindAndReplace;
50
+ build(): string;
51
+ }