@drunk-pulumi/azure 1.0.20 → 1.0.22

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 (109) hide show
  1. package/Aks/Helper.js +7 -6
  2. package/Aks/index.js +2 -2
  3. package/Apps/LogicApp.js +2 -2
  4. package/Automation/index.js +2 -2
  5. package/AzAd/B2C.d.ts +2 -2
  6. package/AzAd/B2C.js +13 -14
  7. package/AzAd/EnvRoles.Consts.d.ts +2 -1
  8. package/AzAd/EnvRoles.Consts.js +8 -2
  9. package/AzAd/EnvRoles.js +3 -3
  10. package/AzAd/Helper.js +8 -8
  11. package/AzAd/Identity.js +3 -2
  12. package/AzAd/UserAssignedIdentity.js +2 -2
  13. package/Builder/ApimBuilder.js +2 -2
  14. package/Builder/ApimProductBuilder.js +3 -4
  15. package/Builder/ResourceBuilder.js +42 -20
  16. package/Builder/ServiceBusBuilder.d.ts +3 -0
  17. package/Builder/ServiceBusBuilder.js +330 -0
  18. package/Builder/StorageBuilder.js +3 -3
  19. package/Builder/VdiBuilder.js +2 -2
  20. package/Builder/index.d.ts +1 -0
  21. package/Builder/index.js +4 -2
  22. package/Builder/types/index.d.ts +1 -0
  23. package/Builder/types/index.js +2 -1
  24. package/Builder/types/serviceBusBuilder.d.ts +23 -0
  25. package/Builder/types/serviceBusBuilder.js +3 -0
  26. package/Builder/types/storageBuilder.d.ts +3 -4
  27. package/Cdn/CdnEndpoint.js +2 -2
  28. package/Cdn/index.js +2 -2
  29. package/Common/AzureEnv.js +1 -1
  30. package/Common/GlobalEnv.js +6 -3
  31. package/Common/Naming/Rulers.d.ts +288 -0
  32. package/Common/Naming/Rulers.js +537 -0
  33. package/Common/Naming/index.d.ts +10 -0
  34. package/Common/Naming/index.js +112 -0
  35. package/Common/RsInfo/Helper.d.ts +3 -3
  36. package/Common/RsInfo/Helper.js +12 -34
  37. package/Common/RsInfo/index.d.ts +24 -24
  38. package/Common/RsInfo/index.js +14 -14
  39. package/Common/index.d.ts +1 -4
  40. package/Common/index.js +7 -6
  41. package/ContainerRegistry/Helper.js +2 -2
  42. package/ContainerRegistry/index.js +2 -2
  43. package/Core/KeyGenerators.js +2 -2
  44. package/Core/Random.d.ts +1 -0
  45. package/Core/Random.js +9 -4
  46. package/CosmosDb/index.js +2 -2
  47. package/IOT/Hub/index.js +3 -3
  48. package/KeyVault/CustomHelper.js +4 -3
  49. package/KeyVault/Helper.d.ts +3 -0
  50. package/KeyVault/Helper.js +29 -4
  51. package/KeyVault/index.js +2 -2
  52. package/Logs/AppInsight.js +2 -2
  53. package/Logs/Helpers.js +7 -4
  54. package/Logs/LogAnalytics.js +2 -2
  55. package/Logs/WebTest.js +3 -3
  56. package/Logs/index.d.ts +1 -1
  57. package/MySql/index.js +2 -2
  58. package/Postgresql/index.js +2 -2
  59. package/RedisCache/index.js +3 -4
  60. package/SignalR/index.js +3 -3
  61. package/Sql/Helper.js +3 -3
  62. package/Sql/SqlDb.js +2 -2
  63. package/Sql/index.js +3 -4
  64. package/Storage/Helper.js +6 -6
  65. package/Storage/ManagementRules.d.ts +2 -2
  66. package/Storage/ManagementRules.js +4 -4
  67. package/Storage/index.d.ts +4 -8
  68. package/Storage/index.js +50 -18
  69. package/VM/DiskEncryptionSet.js +2 -2
  70. package/VM/index.js +3 -3
  71. package/VNet/Bastion.js +2 -2
  72. package/VNet/Firewall.d.ts +2 -2
  73. package/VNet/Firewall.js +4 -4
  74. package/VNet/FirewallPolicy.js +2 -2
  75. package/VNet/GlobalNetworkPeering.js +4 -4
  76. package/VNet/IpAddress.js +1 -1
  77. package/VNet/IpAddressPrefix.js +2 -2
  78. package/VNet/NSGRules/ApimSecurityRule.d.ts +1 -1
  79. package/VNet/NSGRules/ApimSecurityRule.js +20 -20
  80. package/VNet/NatGateway.d.ts +2 -2
  81. package/VNet/NatGateway.js +3 -3
  82. package/VNet/NetworkPeering.js +1 -1
  83. package/VNet/PrivateEndpoint.js +2 -2
  84. package/VNet/RouteTable.js +4 -5
  85. package/VNet/SecurityGroup.d.ts +3 -3
  86. package/VNet/SecurityGroup.js +3 -3
  87. package/VNet/VPNGateway.js +2 -2
  88. package/VNet/Vnet.js +2 -2
  89. package/Web/AppCertOrder.js +2 -2
  90. package/Web/AppConfig.js +2 -2
  91. package/Web/AppGateway.js +2 -2
  92. package/package.json +3 -3
  93. package/types.d.ts +18 -1
  94. package/Common/Naming.d.ts +0 -68
  95. package/Common/Naming.js +0 -190
  96. package/Common/ResourceEnv.d.ts +0 -2
  97. package/Common/ResourceEnv.js +0 -65
  98. package/Core/ResourceGroup.d.ts +0 -18
  99. package/Core/ResourceGroup.js +0 -36
  100. package/ServiceBus/ServiceBusHelper.d.ts +0 -21
  101. package/ServiceBus/ServiceBusHelper.js +0 -35
  102. package/ServiceBus/index.d.ts +0 -88
  103. package/ServiceBus/index.js +0 -405
  104. package/Web/FuncApp.d.ts +0 -11
  105. package/Web/FuncApp.js +0 -41
  106. package/Web/WebAppPlan.d.ts +0 -6
  107. package/Web/WebAppPlan.js +0 -45
  108. package/z_tests/_tools/Mocks.d.ts +0 -2
  109. package/z_tests/_tools/Mocks.js +0 -69
@@ -1,405 +0,0 @@
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 bus = __importStar(require("@pulumi/azure-native/servicebus"));
30
- const ServiceBusHelper_1 = require("./ServiceBusHelper");
31
- const ResourceCreator_1 = __importDefault(require("../Core/ResourceCreator"));
32
- const Common_1 = require("../Common");
33
- const PrivateEndpoint_1 = __importDefault(require("../VNet/PrivateEndpoint"));
34
- const CustomHelper_1 = require("../KeyVault/CustomHelper");
35
- const Helper_1 = require("../KeyVault/Helper");
36
- const duplicateDetectedTime = Common_1.isPrd ? 'P3D' : 'PT10M';
37
- const defaultValues = {
38
- maxDeliveryCount: 10,
39
- enableBatchedOperations: true,
40
- defaultMessageTtl: Common_1.isPrd ? 'P30D' : 'P1D',
41
- defaultMessageTimeToLive: Common_1.isPrd ? 'P30D' : 'P1D',
42
- deadLetteringOnMessageExpiration: true,
43
- maxSizeInMegabytes: 1024,
44
- lockDuration: 'PT1M',
45
- //Auto delete subscription after 30 idle.
46
- //autoDeleteOnIdle: 'P30D',
47
- //enableExpress: true, this and requiresDuplicateDetection are not able to enabled together
48
- };
49
- const createAndStoreConnection = ({ namespaceName, topicName, queueName, connectionType, transportType = 'AmqpWebSockets', resourceGroupName, removeEntityPath, vaultInfo, dependsOn, }) => {
50
- const name = (topicName || queueName);
51
- const key = name
52
- ? (0, ServiceBusHelper_1.getTopicOrQueueVaultName)({
53
- fullName: name,
54
- namespaceFullName: namespaceName,
55
- connectionType,
56
- })
57
- : (0, ServiceBusHelper_1.getNamespaceVaultName)({
58
- namespaceFullName: namespaceName,
59
- connectionType,
60
- });
61
- const primaryName = `${key}-primary`;
62
- const secondaryName = `${key}-secondary`;
63
- const rights = connectionType == ServiceBusHelper_1.BusConnectionTypes.Manage
64
- ? [
65
- bus.AccessRights.Send,
66
- bus.AccessRights.Listen,
67
- bus.AccessRights.Manage,
68
- ]
69
- : connectionType == ServiceBusHelper_1.BusConnectionTypes.Send
70
- ? [bus.AccessRights.Send]
71
- : [bus.AccessRights.Listen];
72
- const rule = topicName
73
- ? new bus.TopicAuthorizationRule(key, {
74
- authorizationRuleName: key,
75
- topicName,
76
- namespaceName,
77
- resourceGroupName,
78
- rights,
79
- }, { dependsOn })
80
- : queueName
81
- ? new bus.QueueAuthorizationRule(key, {
82
- authorizationRuleName: key,
83
- queueName,
84
- namespaceName,
85
- resourceGroupName,
86
- rights,
87
- }, { dependsOn })
88
- : new bus.NamespaceAuthorizationRule(key, {
89
- authorizationRuleName: key,
90
- namespaceName,
91
- resourceGroupName,
92
- rights,
93
- }, { dependsOn });
94
- rule.id.apply(async (id) => {
95
- if (!id)
96
- return;
97
- const keys = await (topicName
98
- ? bus.listTopicKeys({
99
- authorizationRuleName: key,
100
- namespaceName,
101
- resourceGroupName,
102
- topicName,
103
- })
104
- : queueName
105
- ? bus.listQueueKeys({
106
- authorizationRuleName: key,
107
- namespaceName,
108
- resourceGroupName,
109
- queueName,
110
- })
111
- : bus.listNamespaceKeys({
112
- authorizationRuleName: key,
113
- namespaceName,
114
- resourceGroupName,
115
- }));
116
- let primaryConn = removeEntityPath
117
- ? keys.primaryConnectionString.replace(`;EntityPath=${name}`, '')
118
- : keys.primaryConnectionString;
119
- if (typeof transportType === 'string')
120
- primaryConn += `;TransportType=${transportType};`;
121
- let secondConn = removeEntityPath
122
- ? keys.secondaryConnectionString.replace(`;EntityPath=${name}`, '')
123
- : keys.secondaryConnectionString;
124
- if (typeof transportType === 'string')
125
- secondConn += `;TransportType=${transportType};`;
126
- (0, CustomHelper_1.addCustomSecrets)({
127
- vaultInfo,
128
- contentType: `ServiceBus ${namespaceName}/${name}`,
129
- dependsOn: rule,
130
- items: [
131
- { name: primaryName, value: primaryConn },
132
- { name: secondaryName, value: secondConn },
133
- ],
134
- });
135
- });
136
- return { primaryName, secondaryName };
137
- };
138
- /** Topic creator */
139
- const topicCreator = ({ group, namespaceFullName, subscriptions, shortName, vaultInfo, version, enableConnections, dependsOn, options = {
140
- duplicateDetectionHistoryTimeWindow: duplicateDetectedTime,
141
- requiresDuplicateDetection: true,
142
- enablePartitioning: true,
143
- }, ...others }) => {
144
- const topicName = (0, ServiceBusHelper_1.getTopicName)(shortName, version);
145
- const topic = new bus.Topic(topicName, {
146
- topicName,
147
- namespaceName: namespaceFullName,
148
- resourceGroupName: group.resourceGroupName,
149
- ...defaultValues,
150
- ...options,
151
- }, { dependsOn });
152
- let primaryConnectionKeys = undefined;
153
- let secondaryConnectionKeys = undefined;
154
- if (vaultInfo && enableConnections) {
155
- //Send Key
156
- primaryConnectionKeys = createAndStoreConnection({
157
- topicName,
158
- namespaceName: namespaceFullName,
159
- resourceGroupName: group.resourceGroupName,
160
- vaultInfo,
161
- connectionType: ServiceBusHelper_1.BusConnectionTypes.Send,
162
- dependsOn: topic,
163
- ...others,
164
- });
165
- //Listen Key
166
- secondaryConnectionKeys = createAndStoreConnection({
167
- topicName,
168
- namespaceName: namespaceFullName,
169
- resourceGroupName: group.resourceGroupName,
170
- vaultInfo,
171
- connectionType: ServiceBusHelper_1.BusConnectionTypes.Listen,
172
- dependsOn: topic,
173
- ...others,
174
- });
175
- //Manage Key
176
- // createAndStoreConnection({
177
- // topicName,
178
- // namespaceName: namespaceFullName,
179
- // resourceGroupName: group.resourceGroupName,
180
- // vaultInfo,
181
- // connectionType: BusConnectionTypes.Manage,
182
- // dependsOn: topic,
183
- // ...others,
184
- // });
185
- }
186
- let subs = undefined;
187
- //Create Subscriptions
188
- if (subscriptions) {
189
- subs = subscriptions.map((s) => subscriptionCreator({
190
- shortName: s.enableSession
191
- ? `${s.shortName}-${shortName.toLocaleLowerCase()}v${version}-session`
192
- : `${s.shortName}-${shortName.toLocaleLowerCase()}v${version}`,
193
- namespaceFullName,
194
- topicFullName: topic.name,
195
- enableSession: s.enableSession,
196
- group,
197
- dependsOn: topic,
198
- }));
199
- }
200
- return {
201
- name: topicName,
202
- topic,
203
- subs,
204
- vaultNames: { primaryConnectionKeys, secondaryConnectionKeys },
205
- };
206
- };
207
- /** Subscription creator */
208
- const subscriptionCreator = ({ group, shortName, topicFullName, namespaceFullName, enableSession, dependsOn, }) => {
209
- const name = (0, ServiceBusHelper_1.getSubscriptionName)(shortName);
210
- const resource = new bus.Subscription(name, {
211
- subscriptionName: name,
212
- resourceGroupName: group.resourceGroupName,
213
- topicName: topicFullName,
214
- namespaceName: namespaceFullName,
215
- requiresSession: enableSession,
216
- ...defaultValues,
217
- }, { dependsOn });
218
- return {
219
- name,
220
- group,
221
- id: resource.id,
222
- instance: resource,
223
- };
224
- };
225
- /** Queue creator */
226
- const queueCreator = ({ group, namespaceFullName, shortName, vaultInfo, version, enableConnections, options = {
227
- requiresDuplicateDetection: false,
228
- enablePartitioning: true,
229
- }, dependsOn, ...others }) => {
230
- const name = (0, ServiceBusHelper_1.getQueueName)(shortName, version);
231
- const queue = new bus.Queue(name, {
232
- queueName: name,
233
- namespaceName: namespaceFullName,
234
- resourceGroupName: group.resourceGroupName,
235
- ...defaultValues,
236
- ...options,
237
- }, { dependsOn });
238
- let primaryConnectionKeys = undefined;
239
- let secondaryConnectionKeys = undefined;
240
- if (vaultInfo && enableConnections) {
241
- //Send Key
242
- primaryConnectionKeys = createAndStoreConnection({
243
- queueName: name,
244
- namespaceName: namespaceFullName,
245
- resourceGroupName: group.resourceGroupName,
246
- vaultInfo,
247
- connectionType: ServiceBusHelper_1.BusConnectionTypes.Send,
248
- dependsOn: queue,
249
- ...others,
250
- });
251
- //Listen Key
252
- secondaryConnectionKeys = createAndStoreConnection({
253
- queueName: name,
254
- namespaceName: namespaceFullName,
255
- resourceGroupName: group.resourceGroupName,
256
- vaultInfo,
257
- connectionType: ServiceBusHelper_1.BusConnectionTypes.Listen,
258
- dependsOn: queue,
259
- ...others,
260
- });
261
- //Manage Key
262
- // createAndStoreConnection({
263
- // queueName: name,
264
- // namespaceName: namespaceFullName,
265
- // resourceGroupName: group.resourceGroupName,
266
- // vaultInfo,
267
- // connectionType: BusConnectionTypes.Manage,
268
- // dependsOn: queue,
269
- // ...others,
270
- // });
271
- }
272
- return {
273
- name,
274
- queue,
275
- vaultNames: { primaryConnectionKeys, secondaryConnectionKeys },
276
- };
277
- };
278
- /** Azure Bus creator */
279
- exports.default = ({ name, group, topics, queues, drConfig, network = {}, vaultInfo, enableNamespaceConnections, enableTopicConnections, enableQueueConnections, sku = bus.SkuName.Basic,
280
- //monitoring,
281
- ...others }) => {
282
- name = (0, Common_1.getServiceBusName)(name);
283
- const { resource, diagnostic } = (0, ResourceCreator_1.default)(bus.Namespace, {
284
- namespaceName: name,
285
- ...group,
286
- sku: { name: sku, tier: sku },
287
- ...others,
288
- // monitoring: monitoring
289
- // ? {
290
- // ...monitoring,
291
- // logsCategories: ['OperationalLogs'],
292
- // }
293
- // : undefined,
294
- });
295
- const namespace = resource;
296
- if (drConfig && sku === bus.SkuName.Premium) {
297
- new bus.DisasterRecoveryConfig(name, {
298
- namespaceName: namespace.name,
299
- resourceGroupName: group.resourceGroupName,
300
- ...drConfig,
301
- });
302
- }
303
- let primaryConnectionKeys = undefined;
304
- let secondaryConnectionKeys = undefined;
305
- //Create Keys
306
- if (vaultInfo && enableNamespaceConnections) {
307
- //Send Key
308
- // createAndStoreConnection({
309
- // namespaceName: name,
310
- // resourceGroupName: group.resourceGroupName,
311
- // vaultInfo,
312
- // connectionType: BusConnectionTypes.Send,
313
- // dependsOn: resource,
314
- // ...others,
315
- // });
316
- //Listen Key
317
- primaryConnectionKeys = createAndStoreConnection({
318
- namespaceName: name,
319
- resourceGroupName: group.resourceGroupName,
320
- vaultInfo,
321
- connectionType: ServiceBusHelper_1.BusConnectionTypes.Listen,
322
- dependsOn: resource,
323
- ...others,
324
- });
325
- //Manage Key
326
- secondaryConnectionKeys = createAndStoreConnection({
327
- namespaceName: name,
328
- resourceGroupName: group.resourceGroupName,
329
- vaultInfo,
330
- connectionType: ServiceBusHelper_1.BusConnectionTypes.Manage,
331
- dependsOn: resource,
332
- ...others,
333
- });
334
- }
335
- //Create Topics and Queues
336
- let tps = undefined;
337
- if (topics) {
338
- tps = topics.map((t) => topicCreator({
339
- group,
340
- namespaceFullName: name,
341
- vaultInfo,
342
- dependsOn: resource,
343
- enableConnections: enableTopicConnections,
344
- ...others,
345
- ...t,
346
- }));
347
- }
348
- let qes = undefined;
349
- if (queues) {
350
- qes = queues.map((q) => queueCreator({
351
- group,
352
- namespaceFullName: name,
353
- vaultInfo,
354
- dependsOn: resource,
355
- enableConnections: enableQueueConnections,
356
- ...others,
357
- ...q,
358
- }));
359
- }
360
- if (network && sku === bus.SkuName.Premium) {
361
- if (network.subnetId || network.ipAddresses) {
362
- new bus.NamespaceNetworkRuleSet(name, {
363
- namespaceName: namespace.name,
364
- ...group,
365
- defaultAction: 'Deny',
366
- ipRules: network.ipAddresses
367
- ? network.ipAddresses.map((i) => ({
368
- ipMask: i,
369
- action: bus.NetworkRuleIPAction.Allow,
370
- }))
371
- : undefined,
372
- virtualNetworkRules: network.subnetId
373
- ? [
374
- {
375
- ignoreMissingVnetServiceEndpoint: false,
376
- subnet: { id: network.subnetId },
377
- },
378
- ]
379
- : undefined,
380
- });
381
- }
382
- if (network.privateLink) {
383
- (0, PrivateEndpoint_1.default)({
384
- resourceInfo: { name, group, id: namespace.id },
385
- subnetIds: network.privateLink.subnetIds,
386
- linkServiceGroupIds: network.privateLink.type
387
- ? [network.privateLink.type]
388
- : ['namespace'],
389
- privateDnsZoneName: 'privatelink.servicebus.windows.net',
390
- });
391
- }
392
- }
393
- return {
394
- name,
395
- resource: namespace,
396
- queues: qes,
397
- topics: tps,
398
- vaultNames: { primaryConnectionKeys, secondaryConnectionKeys },
399
- getConnectionString: (name) => vaultInfo
400
- ? (0, Helper_1.getSecret)({ name, nameFormatted: true, vaultInfo })
401
- : undefined,
402
- diagnostic,
403
- };
404
- };
405
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2VydmljZUJ1cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUVBQXVEO0FBV3ZELHlEQU80QjtBQUM1Qiw4RUFBOEM7QUFDOUMsc0NBQXFEO0FBQ3JELDhFQUFzRDtBQUN0RCwyREFBNEQ7QUFDNUQsK0NBQStDO0FBRy9DLE1BQU0scUJBQXFCLEdBQUcsY0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUV0RCxNQUFNLGFBQWEsR0FBRztJQUNwQixnQkFBZ0IsRUFBRSxFQUFFO0lBQ3BCLHVCQUF1QixFQUFFLElBQUk7SUFDN0IsaUJBQWlCLEVBQUUsY0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7SUFDekMsd0JBQXdCLEVBQUUsY0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUs7SUFDaEQsZ0NBQWdDLEVBQUUsSUFBSTtJQUN0QyxrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLFlBQVksRUFBRSxNQUFNO0lBRXBCLHlDQUF5QztJQUN6QywyQkFBMkI7SUFDM0IsMkZBQTJGO0NBQzVGLENBQUM7QUFvQkYsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLEVBQ2hDLGFBQWEsRUFDYixTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZCxhQUFhLEdBQUcsZ0JBQWdCLEVBQ2hDLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFNBQVMsR0FDUSxFQUFFLEVBQUU7SUFDckIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFFLENBQUM7SUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSTtRQUNkLENBQUMsQ0FBQyxJQUFBLDJDQUF3QixFQUFDO1lBQ3ZCLFFBQVEsRUFBRSxJQUFJO1lB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
package/Web/FuncApp.d.ts DELETED
@@ -1,11 +0,0 @@
1
- import { BasicResourceArgs } from "../types";
2
- import * as pulumi from "@pulumi/pulumi";
3
- import { SiteConfigArgs } from "./types";
4
- interface Props extends BasicResourceArgs {
5
- kind: "FunctionApp" | "WebApp";
6
- appServicePlanId: pulumi.Output<string>;
7
- siteConfig?: SiteConfigArgs;
8
- enabled?: boolean;
9
- }
10
- declare const _default: ({ name, group, kind, appServicePlanId, siteConfig, enabled, }: Props) => import("@pulumi/azure-native/web/webApp").WebApp;
11
- export default _default;
package/Web/FuncApp.js DELETED
@@ -1,41 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const native = __importStar(require("@pulumi/azure-native"));
27
- const Naming_1 = require("../Common/Naming");
28
- exports.default = ({ name, group, kind, appServicePlanId, siteConfig, enabled, }) => {
29
- const finalName = (0, Naming_1.getFuncAppName)(name);
30
- const app = new native.web.WebApp(finalName, {
31
- kind,
32
- name: finalName,
33
- ...group,
34
- serverFarmId: appServicePlanId,
35
- enabled,
36
- httpsOnly: true,
37
- siteConfig,
38
- }, { deleteBeforeReplace: true });
39
- return app;
40
- };
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnVuY0FwcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9XZWIvRnVuY0FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQStDO0FBRS9DLDZDQUFrRDtBQVlsRCxrQkFBZSxDQUFDLEVBQ2QsSUFBSSxFQUNKLEtBQUssRUFDTCxJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixPQUFPLEdBQ0QsRUFBRSxFQUFFO0lBQ1YsTUFBTSxTQUFTLEdBQUcsSUFBQSx1QkFBYyxFQUFDLElBQUksQ0FBQyxDQUFDO0lBRXZDLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQy9CLFNBQVMsRUFDVDtRQUNFLElBQUk7UUFDSixJQUFJLEVBQUUsU0FBUztRQUNmLEdBQUcsS0FBSztRQUVSLFlBQVksRUFBRSxnQkFBZ0I7UUFDOUIsT0FBTztRQUNQLFNBQVMsRUFBRSxJQUFJO1FBRWYsVUFBVTtLQUNYLEVBQ0QsRUFBRSxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FDOUIsQ0FBQztJQUVGLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIn0=
@@ -1,6 +0,0 @@
1
- import { BasicResourceArgs } from "../types";
2
- interface Props extends BasicResourceArgs {
3
- kind: "Linux";
4
- }
5
- declare const _default: ({ name, group, kind }: Props) => import("@pulumi/azure-native/web/appServicePlan").AppServicePlan;
6
- export default _default;
package/Web/WebAppPlan.js DELETED
@@ -1,45 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const native = __importStar(require("@pulumi/azure-native"));
27
- const Naming_1 = require("../Common/Naming");
28
- exports.default = ({ name, group, kind }) => {
29
- const finalName = (0, Naming_1.getAppPlanName)(name);
30
- const appServicePlan = new native.web.AppServicePlan(finalName, {
31
- name: finalName,
32
- ...group,
33
- // Run on Linux
34
- kind,
35
- // Consumption plan SKU
36
- sku: {
37
- tier: "Dynamic",
38
- name: "Y1",
39
- },
40
- // For Linux, you need to change the plan to have Reserved = true property.
41
- reserved: kind === "Linux",
42
- });
43
- return appServicePlan;
44
- };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ViQXBwUGxhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9XZWIvV2ViQXBwUGxhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkRBQStDO0FBRS9DLDZDQUFrRDtBQU9sRCxrQkFBZSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQVMsRUFBRSxFQUFFO0lBQzlDLE1BQU0sU0FBUyxHQUFHLElBQUEsdUJBQWMsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUV2QyxNQUFNLGNBQWMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRTtRQUM5RCxJQUFJLEVBQUUsU0FBUztRQUNmLEdBQUcsS0FBSztRQUNSLGVBQWU7UUFDZixJQUFJO1FBRUosdUJBQXVCO1FBQ3ZCLEdBQUcsRUFBRTtZQUNILElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLElBQUk7U0FDWDtRQUVELDJFQUEyRTtRQUMzRSxRQUFRLEVBQUUsSUFBSSxLQUFLLE9BQU87S0FDM0IsQ0FBQyxDQUFDO0lBRUgsT0FBTyxjQUFjLENBQUM7QUFDeEIsQ0FBQyxDQUFDIn0=
@@ -1,2 +0,0 @@
1
- declare const _default: Promise<void>;
2
- export default _default;
@@ -1,69 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const pulumi = __importStar(require("@pulumi/pulumi"));
27
- const tryFindName = (props) => {
28
- let name = props.name || props.resourceName;
29
- if (!name) {
30
- const keys = Object.keys(props);
31
- //Try to find the name that is not a resourceGroupName
32
- let key = keys.find((k) => k.endsWith("Name"));
33
- if (key) {
34
- name = props[key];
35
- }
36
- }
37
- //if (!name) console.error('Unable to find name', props);
38
- return name;
39
- };
40
- exports.default = pulumi.runtime.setMocks({
41
- newResource: (args) => {
42
- const name = tryFindName(args.inputs);
43
- return {
44
- id: `/subscriptions/12345/resourceGroups/resr-group/providers/${name}`,
45
- name,
46
- state: {
47
- name,
48
- ...args.inputs,
49
- result: args.type.includes("Random")
50
- ? "5c1c5657-085b-41c8-8d11-de897e70eae7"
51
- : name.endsWith("ssh")
52
- ? {
53
- publicKey: "1234567890",
54
- privateKey: "1234567890",
55
- }
56
- : "",
57
- },
58
- };
59
- },
60
- call: (args) => {
61
- if (args.token === "azure:core/getSubscription:getSubscription")
62
- return {
63
- id: "00000000-0000-0000-0000-000000000000",
64
- display_name: "subscription",
65
- };
66
- return args.inputs;
67
- },
68
- }, "testProject", "testStack", false, "testOrganization");
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9ja3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvel90ZXN0cy9fdG9vbHMvTW9ja3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUF5QztBQUV6QyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO0lBQ2pDLElBQUksSUFBSSxHQUFXLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQztJQUVwRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLHNEQUFzRDtRQUN0RCxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFL0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCx5REFBeUQ7SUFDekQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUM7QUFFRixrQkFBZSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FDcEM7SUFDRSxXQUFXLEVBQUUsQ0FDWCxJQUFxQyxFQUtyQyxFQUFFO1FBQ0YsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV0QyxPQUFPO1lBQ0wsRUFBRSxFQUFFLDREQUE0RCxJQUFJLEVBQUU7WUFDdEUsSUFBSTtZQUNKLEtBQUssRUFBRTtnQkFDTCxJQUFJO2dCQUNKLEdBQUcsSUFBSSxDQUFDLE1BQU07Z0JBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztvQkFDbEMsQ0FBQyxDQUFDLHNDQUFzQztvQkFDeEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO3dCQUNwQixDQUFDLENBQUM7NEJBQ0UsU0FBUyxFQUFFLFlBQVk7NEJBQ3ZCLFVBQVUsRUFBRSxZQUFZO3lCQUN6Qjt3QkFDSCxDQUFDLENBQUMsRUFBRTthQUNUO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLEVBQUUsQ0FBQyxJQUFpQyxFQUFFLEVBQUU7UUFDMUMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLDRDQUE0QztZQUM3RCxPQUFPO2dCQUNMLEVBQUUsRUFBRSxzQ0FBc0M7Z0JBQzFDLFlBQVksRUFBRSxjQUFjO2FBQzdCLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztDQUNGLEVBQ0QsYUFBYSxFQUNiLFdBQVcsRUFDWCxLQUFLLEVBQ0wsa0JBQWtCLENBQ25CLENBQUMifQ==