@drunk-pulumi/azure-components 1.0.2 → 1.0.4
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.
- package/README.md +29 -2
- package/ResourceBuilder.d.ts +76 -24
- package/ResourceBuilder.js +144 -44
- package/aks/AzKubernetes.d.ts +30 -8
- package/aks/AzKubernetes.js +107 -44
- package/aks/ContainerRegistry.d.ts +4 -3
- package/aks/ContainerRegistry.js +22 -19
- package/apim/Apim.d.ts +51 -0
- package/apim/Apim.js +248 -0
- package/apim/ApimApi.d.ts +34 -0
- package/apim/ApimApi.js +193 -0
- package/apim/ApimApiSet.d.ts +27 -0
- package/apim/ApimApiSet.js +88 -0
- package/apim/ApimPolicyBuilder.d.ts +93 -0
- package/apim/ApimPolicyBuilder.js +294 -0
- package/apim/ApimProduct.d.ts +27 -0
- package/apim/ApimProduct.js +118 -0
- package/apim/index.d.ts +2 -0
- package/apim/index.js +19 -0
- package/apim/openAPI3Type.d.ts +85 -0
- package/apim/openAPI3Type.js +3 -0
- package/apim/openApiHelper.d.ts +1 -0
- package/apim/openApiHelper.js +36 -0
- package/app/SignalR.d.ts +3 -3
- package/app/SignalR.js +35 -20
- package/azAd/AppRegistration.d.ts +13 -7
- package/azAd/AppRegistration.js +48 -40
- package/azAd/AzRole.js +2 -2
- package/azAd/GroupRole.d.ts +7 -11
- package/azAd/GroupRole.js +7 -6
- package/azAd/RoleAssignment.d.ts +1 -1
- package/azAd/RoleAssignment.js +5 -5
- package/azAd/UserAssignedIdentity.d.ts +3 -0
- package/azAd/UserAssignedIdentity.js +23 -7
- package/azAd/helpers/index.d.ts +0 -2
- package/azAd/helpers/index.js +26 -21
- package/azAd/helpers/rolesBuiltIn.d.ts +6 -57
- package/azAd/helpers/rolesBuiltIn.js +25868 -25353
- package/azAd/helpers/rsRoleDefinition.d.ts +12 -6
- package/azAd/helpers/rsRoleDefinition.js +43 -31
- package/base/BaseComponent.d.ts +1 -15
- package/base/BaseComponent.js +3 -22
- package/base/BaseResourceComponent.d.ts +24 -17
- package/base/BaseResourceComponent.js +61 -45
- package/base/helpers.d.ts +0 -6
- package/base/helpers.js +1 -18
- package/common/RandomPassword.js +4 -4
- package/common/RandomString.d.ts +1 -1
- package/common/RandomString.js +3 -3
- package/common/RsGroup.js +2 -2
- package/database/AzSql.d.ts +11 -10
- package/database/AzSql.js +38 -24
- package/database/MySql.d.ts +1 -1
- package/database/MySql.js +45 -28
- package/database/Postgres.d.ts +2 -1
- package/database/Postgres.js +29 -17
- package/database/Redis.d.ts +25 -4
- package/database/Redis.js +88 -25
- package/helpers/autoTags.js +2 -1
- package/helpers/certHelpers.d.ts +20 -0
- package/helpers/certHelpers.js +85 -0
- package/helpers/rsHelpers.d.ts +19 -1
- package/helpers/rsHelpers.js +27 -4
- package/helpers/stackEnv.d.ts +1 -1
- package/helpers/stackEnv.js +1 -1
- package/index.d.ts +1 -0
- package/index.js +2 -1
- package/package.json +10 -7
- package/services/Automation.d.ts +3 -1
- package/services/Automation.js +8 -8
- package/services/ServiceBus.d.ts +3 -2
- package/services/ServiceBus.js +17 -19
- package/types.d.ts +44 -15
- package/vault/EncryptionKey.d.ts +1 -1
- package/vault/EncryptionKey.js +4 -4
- package/vault/KeyVault.d.ts +7 -2
- package/vault/KeyVault.js +16 -5
- package/vault/VaultSecret.d.ts +1 -1
- package/vault/VaultSecret.js +9 -9
- package/vault/VaultSecrets.d.ts +2 -4
- package/vault/VaultSecrets.js +4 -6
- package/vault/helpers.d.ts +17 -0
- package/vault/helpers.js +50 -2
- package/vm/DiskEncryptionSet.js +2 -2
- package/vm/VirtualMachine.d.ts +2 -1
- package/vm/VirtualMachine.js +37 -25
- package/vnet/Basion.d.ts +4 -3
- package/vnet/Basion.js +17 -4
- package/vnet/DnsZone.d.ts +1 -1
- package/vnet/DnsZone.js +2 -2
- package/vnet/IpAddresses.d.ts +6 -2
- package/vnet/IpAddresses.js +2 -2
- package/vnet/NetworkPeering.d.ts +1 -1
- package/vnet/NetworkPeering.js +1 -1
- package/vnet/PrivateDnsZone.d.ts +1 -1
- package/vnet/PrivateDnsZone.js +4 -4
- package/vnet/PrivateEndpoint.d.ts +7 -10
- package/vnet/PrivateEndpoint.js +11 -10
- package/vnet/RouteTable.d.ts +1 -1
- package/vnet/RouteTable.js +2 -2
- package/vnet/VirtualNetwork.d.ts +30 -43
- package/vnet/VirtualNetwork.js +77 -43
- package/vnet/VpnGateway.js +2 -2
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
2
|
+
type ApimCorsType = {
|
|
3
|
+
origins: pulumi.Input<string>[];
|
|
4
|
+
};
|
|
5
|
+
export declare enum SetHeaderTypes {
|
|
6
|
+
delete = "delete",
|
|
7
|
+
override = "override",
|
|
8
|
+
skip = "skip",
|
|
9
|
+
append = "append"
|
|
10
|
+
}
|
|
11
|
+
export type ApimClientCertType = {
|
|
12
|
+
issuer?: pulumi.Input<string>;
|
|
13
|
+
subject?: pulumi.Input<string>;
|
|
14
|
+
verifyCert?: pulumi.Input<boolean>;
|
|
15
|
+
thumbprint?: pulumi.Input<string>;
|
|
16
|
+
};
|
|
17
|
+
export type ApimForwardToServiceBusType = {
|
|
18
|
+
authClientId?: pulumi.Input<string>;
|
|
19
|
+
serviceBusName: pulumi.Input<string>;
|
|
20
|
+
topicOrQueueName: pulumi.Input<string>;
|
|
21
|
+
brokerProperties?: Record<string, pulumi.Input<string>>;
|
|
22
|
+
};
|
|
23
|
+
export type ApimSetHeaderType = {
|
|
24
|
+
name: pulumi.Input<string>;
|
|
25
|
+
value?: pulumi.Input<string>;
|
|
26
|
+
type: SetHeaderTypes;
|
|
27
|
+
};
|
|
28
|
+
export type ApimSetResponseBodyType = {
|
|
29
|
+
condition?: pulumi.Input<string>;
|
|
30
|
+
conditionStatusCode?: pulumi.Input<number>;
|
|
31
|
+
responseBody: pulumi.Input<string>;
|
|
32
|
+
responseStatusCode?: pulumi.Input<number>;
|
|
33
|
+
};
|
|
34
|
+
export declare class ApimPolicyBuilder {
|
|
35
|
+
private _inboundPolicies;
|
|
36
|
+
private _outboundPolicies;
|
|
37
|
+
private _cors;
|
|
38
|
+
private _mockResponse;
|
|
39
|
+
private _clientCertVerification?;
|
|
40
|
+
setBaseUrl(url: pulumi.Input<string>): ApimPolicyBuilder;
|
|
41
|
+
setBaseUrlIf(condition: boolean, url: pulumi.Input<string>): ApimPolicyBuilder;
|
|
42
|
+
setRequestHeader(props: ApimSetHeaderType): ApimPolicyBuilder;
|
|
43
|
+
setResponseHeaders(props: ApimSetHeaderType): ApimPolicyBuilder;
|
|
44
|
+
authBasic(props: {
|
|
45
|
+
userName: pulumi.Input<string>;
|
|
46
|
+
password: pulumi.Input<string>;
|
|
47
|
+
}): ApimPolicyBuilder;
|
|
48
|
+
authCert(props: {
|
|
49
|
+
certId: pulumi.Input<string>;
|
|
50
|
+
password?: pulumi.Input<string>;
|
|
51
|
+
} | {
|
|
52
|
+
thumbprint: pulumi.Input<string>;
|
|
53
|
+
}): ApimPolicyBuilder;
|
|
54
|
+
authIdentity(props: {
|
|
55
|
+
resource: pulumi.Input<string>;
|
|
56
|
+
clientId?: pulumi.Input<string>;
|
|
57
|
+
variableName: pulumi.Input<string>;
|
|
58
|
+
ignoreError?: pulumi.Input<boolean>;
|
|
59
|
+
setHeaderKey?: pulumi.Input<string>;
|
|
60
|
+
}): ApimPolicyBuilder;
|
|
61
|
+
checkHeader(props: {
|
|
62
|
+
name: pulumi.Input<string>;
|
|
63
|
+
values?: pulumi.Input<string>[];
|
|
64
|
+
}): ApimPolicyBuilder;
|
|
65
|
+
mockResponse(props: {
|
|
66
|
+
code?: pulumi.Input<number>;
|
|
67
|
+
contentType?: string;
|
|
68
|
+
}): ApimPolicyBuilder;
|
|
69
|
+
rewriteUri(template: pulumi.Input<string>): ApimPolicyBuilder;
|
|
70
|
+
setRateLimit(props: {
|
|
71
|
+
calls?: pulumi.Input<number>;
|
|
72
|
+
inSecond?: pulumi.Input<number>;
|
|
73
|
+
successConditionOnly?: boolean;
|
|
74
|
+
}): ApimPolicyBuilder;
|
|
75
|
+
setCacheOptions(duration?: pulumi.Input<string>): ApimPolicyBuilder;
|
|
76
|
+
setCors(props: ApimCorsType): ApimPolicyBuilder;
|
|
77
|
+
setClientIpHeader(headerKey: pulumi.Input<string>): ApimPolicyBuilder;
|
|
78
|
+
setWhitelistIPs(ipAddresses: pulumi.Input<string>[]): ApimPolicyBuilder;
|
|
79
|
+
verifyClientCert(props: ApimClientCertType): ApimPolicyBuilder;
|
|
80
|
+
forwardToBus(props: ApimForwardToServiceBusType): ApimPolicyBuilder;
|
|
81
|
+
forwardToBusIf(condition: boolean, props: ApimForwardToServiceBusType): ApimPolicyBuilder;
|
|
82
|
+
/**Replace outbound results */
|
|
83
|
+
replacesResponse(props: {
|
|
84
|
+
from: pulumi.Input<string>;
|
|
85
|
+
to: pulumi.Input<string>;
|
|
86
|
+
}): ApimPolicyBuilder;
|
|
87
|
+
setResponseBody(...props: ApimSetResponseBodyType[]): ApimPolicyBuilder;
|
|
88
|
+
build(): pulumi.Output<string>;
|
|
89
|
+
private setHeader;
|
|
90
|
+
private buildCors;
|
|
91
|
+
private buildCertVerification;
|
|
92
|
+
}
|
|
93
|
+
export {};
|
|
@@ -0,0 +1,294 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ApimPolicyBuilder = exports.SetHeaderTypes = void 0;
|
|
37
|
+
const helpers_1 = require("../helpers");
|
|
38
|
+
const database_1 = require("../database");
|
|
39
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
40
|
+
var SetHeaderTypes;
|
|
41
|
+
(function (SetHeaderTypes) {
|
|
42
|
+
SetHeaderTypes["delete"] = "delete";
|
|
43
|
+
SetHeaderTypes["override"] = "override";
|
|
44
|
+
SetHeaderTypes["skip"] = "skip";
|
|
45
|
+
SetHeaderTypes["append"] = "append";
|
|
46
|
+
})(SetHeaderTypes || (exports.SetHeaderTypes = SetHeaderTypes = {}));
|
|
47
|
+
class ApimPolicyBuilder {
|
|
48
|
+
_inboundPolicies = [];
|
|
49
|
+
_outboundPolicies = [];
|
|
50
|
+
_cors = undefined;
|
|
51
|
+
_mockResponse = false;
|
|
52
|
+
_clientCertVerification;
|
|
53
|
+
setBaseUrl(url) {
|
|
54
|
+
this._inboundPolicies.push(pulumi.interpolate `<set-backend-service base-url="${url}" />`);
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
setBaseUrlIf(condition, url) {
|
|
58
|
+
if (condition)
|
|
59
|
+
this.setBaseUrl(url);
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
setRequestHeader(props) {
|
|
63
|
+
const rs = this.setHeader(props);
|
|
64
|
+
this._inboundPolicies.push(rs);
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
setResponseHeaders(props) {
|
|
68
|
+
const rs = this.setHeader(props);
|
|
69
|
+
this._outboundPolicies.push(rs);
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
authBasic(props) {
|
|
73
|
+
this._inboundPolicies.push(pulumi.interpolate `<authentication-basic username="${props.userName}" password="${props.password}" />`);
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
authCert(props) {
|
|
77
|
+
this._inboundPolicies.push('thumbprint' in props
|
|
78
|
+
? pulumi.interpolate `<authentication-certificate thumbprint="${props.thumbprint}" />`
|
|
79
|
+
: pulumi.interpolate `<authentication-certificate certificate-id="${props.certId}" password="${props.password}" />`);
|
|
80
|
+
return this;
|
|
81
|
+
}
|
|
82
|
+
authIdentity(props) {
|
|
83
|
+
this._inboundPolicies.push('clientId' in props && props.clientId
|
|
84
|
+
? pulumi.interpolate `\t<authentication-managed-identity resource="${props.resource}" client-id="${props.clientId}" output-token-variable-name="${props.variableName}" ignore-error="${props.ignoreError}"/>`
|
|
85
|
+
: pulumi.interpolate `\t<authentication-managed-identity resource="${props.resource}" output-token-variable-name="${props.variableName}" ignore-error="${props.ignoreError}"/>`);
|
|
86
|
+
if (props.setHeaderKey)
|
|
87
|
+
this.setRequestHeader({
|
|
88
|
+
name: props.setHeaderKey,
|
|
89
|
+
type: SetHeaderTypes.override,
|
|
90
|
+
value: pulumi.interpolate `@($"Bearer {context.Variables["${props.variableName}"]}")`,
|
|
91
|
+
});
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
checkHeader(props) {
|
|
95
|
+
const vs = props.values ? props.values.map((v) => pulumi.interpolate `<value>${v}</value>`) : [];
|
|
96
|
+
const rs = pulumi.interpolate `\t<check-header name="${props.name}" failed-check-httpcode="401" failed-check-error-message="The header ${props.name} is not found" ignore-case="true">
|
|
97
|
+
${pulumi.output(vs).apply((s) => s.join('\n'))}
|
|
98
|
+
\t</check-header>`;
|
|
99
|
+
this._inboundPolicies.push(rs);
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
mockResponse(props) {
|
|
103
|
+
this._inboundPolicies.push(pulumi.interpolate `<mock-response status-code="${props.code ?? 200}" content-type="${props.contentType ?? 'application/json'}" />`);
|
|
104
|
+
this._mockResponse = true;
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
107
|
+
rewriteUri(template) {
|
|
108
|
+
this._inboundPolicies.push(pulumi.interpolate `<rewrite-uri template="${template ?? '/'}" />`);
|
|
109
|
+
return this;
|
|
110
|
+
}
|
|
111
|
+
setRateLimit(props) {
|
|
112
|
+
this._inboundPolicies.push(props.successConditionOnly
|
|
113
|
+
? pulumi.interpolate `<rate-limit-by-key calls="${props.calls ?? 10}" renewal-period="${props.inSecond ?? 10}" counter-key="@(context.Request.IpAddress)" increment-condition="@(context.Response.StatusCode >= 200 && context.Response.StatusCode < 300)" />`
|
|
114
|
+
: pulumi.interpolate `<rate-limit-by-key calls="${props.calls ?? 10}" renewal-period="${props.inSecond ?? 10}" counter-key="@(context.Request.IpAddress)" />`);
|
|
115
|
+
return this;
|
|
116
|
+
}
|
|
117
|
+
setCacheOptions(duration) {
|
|
118
|
+
this._inboundPolicies.push(pulumi.interpolate `<cache-lookup vary-by-developer="false"
|
|
119
|
+
vary-by-developer-groups="false"
|
|
120
|
+
allow-private-response-caching="true"
|
|
121
|
+
must-revalidate="true"
|
|
122
|
+
downstream-caching-type="public" />`);
|
|
123
|
+
this._outboundPolicies.push(pulumi.interpolate `<cache-store duration="${duration ?? 60}" />`);
|
|
124
|
+
return this;
|
|
125
|
+
}
|
|
126
|
+
setCors(props) {
|
|
127
|
+
this._cors = props;
|
|
128
|
+
return this;
|
|
129
|
+
}
|
|
130
|
+
setClientIpHeader(headerKey) {
|
|
131
|
+
this.setRequestHeader({
|
|
132
|
+
name: headerKey ?? `x-${helpers_1.stackInfo.organization}-clientIp`,
|
|
133
|
+
value: '@(context.Request.IpAddress)',
|
|
134
|
+
type: SetHeaderTypes.override,
|
|
135
|
+
});
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
setWhitelistIPs(ipAddresses) {
|
|
139
|
+
const policy = pulumi.interpolate `\t<ip-filter action="allow">\r\n${pulumi.output(ipAddresses).apply((ips) => ips
|
|
140
|
+
.map((ip) => {
|
|
141
|
+
if (ip.includes('/')) {
|
|
142
|
+
const range = database_1.dbHelpers.getIpsRange(ip);
|
|
143
|
+
return `<address-range from="${range.first}" to="${range.last}" />`;
|
|
144
|
+
}
|
|
145
|
+
return `<address>${ip}</address>`;
|
|
146
|
+
})
|
|
147
|
+
.join('\r\n'))}
|
|
148
|
+
\t</ip-filter>`;
|
|
149
|
+
this._inboundPolicies.push(policy);
|
|
150
|
+
return this;
|
|
151
|
+
}
|
|
152
|
+
verifyClientCert(props) {
|
|
153
|
+
this._clientCertVerification = props;
|
|
154
|
+
return this;
|
|
155
|
+
}
|
|
156
|
+
forwardToBus(props) {
|
|
157
|
+
this.authIdentity({
|
|
158
|
+
clientId: props.authClientId,
|
|
159
|
+
variableName: 'x-forward-to-bus',
|
|
160
|
+
setHeaderKey: 'Authorization',
|
|
161
|
+
resource: 'https://servicebus.azure.net',
|
|
162
|
+
ignoreError: false,
|
|
163
|
+
});
|
|
164
|
+
this.setBaseUrl(pulumi.interpolate `https://${props.serviceBusName}.servicebus.windows.net`);
|
|
165
|
+
this.rewriteUri(pulumi.interpolate `${props.topicOrQueueName}/messages`);
|
|
166
|
+
if (props.brokerProperties) {
|
|
167
|
+
Object.keys(props.brokerProperties).forEach((key) => this.setRequestHeader({
|
|
168
|
+
name: key,
|
|
169
|
+
type: SetHeaderTypes.append,
|
|
170
|
+
value: props.brokerProperties[key],
|
|
171
|
+
}));
|
|
172
|
+
}
|
|
173
|
+
return this;
|
|
174
|
+
}
|
|
175
|
+
forwardToBusIf(condition, props) {
|
|
176
|
+
if (condition)
|
|
177
|
+
this.forwardToBus(props);
|
|
178
|
+
return this;
|
|
179
|
+
}
|
|
180
|
+
/**Replace outbound results */
|
|
181
|
+
replacesResponse(props) {
|
|
182
|
+
this._outboundPolicies.push(pulumi.interpolate `<find-and-replace from="${props.from}" to="${props.to}" />`);
|
|
183
|
+
return this;
|
|
184
|
+
}
|
|
185
|
+
setResponseBody(...props) {
|
|
186
|
+
const options = props.map((c) => c.conditionStatusCode
|
|
187
|
+
? pulumi.interpolate `\t<when condition="@(context.Response.StatusCode == ${c.conditionStatusCode})">
|
|
188
|
+
<set-status code="${c.responseStatusCode ?? 200}" />
|
|
189
|
+
<set-body>${c.responseBody}</set-body>
|
|
190
|
+
\t</when>`
|
|
191
|
+
: pulumi.interpolate `\t<when condition="${c.condition}">
|
|
192
|
+
<set-status code="${c.responseStatusCode ?? 200}" />
|
|
193
|
+
<set-body>${c.responseBody}</set-body>
|
|
194
|
+
\t</when>`);
|
|
195
|
+
this._outboundPolicies.push(pulumi.interpolate `\t<choose>
|
|
196
|
+
${pulumi.output(options).apply((ops) => ops.join('\n'))}
|
|
197
|
+
\t</choose>`);
|
|
198
|
+
return this;
|
|
199
|
+
}
|
|
200
|
+
build() {
|
|
201
|
+
this.buildCors();
|
|
202
|
+
//This must be a last rule
|
|
203
|
+
this.buildCertVerification();
|
|
204
|
+
let backend = '<base />';
|
|
205
|
+
if (!this._mockResponse) {
|
|
206
|
+
backend = pulumi.interpolate `<forward-request timeout="120" follow-redirects="true" buffer-request-body="true" fail-on-error-status-code="true"/>`;
|
|
207
|
+
}
|
|
208
|
+
return pulumi.interpolate `<policies>
|
|
209
|
+
<inbound>
|
|
210
|
+
<base />
|
|
211
|
+
${pulumi.output(this._inboundPolicies).apply((is) => is.join('\n'))}
|
|
212
|
+
</inbound>
|
|
213
|
+
<backend>
|
|
214
|
+
${backend}
|
|
215
|
+
</backend>
|
|
216
|
+
<outbound>
|
|
217
|
+
<base />
|
|
218
|
+
<set-header name="Strict-Transport-Security" exists-action="override">
|
|
219
|
+
<value>max-age=3600; includeSubDomains</value>
|
|
220
|
+
</set-header>
|
|
221
|
+
<set-header name="X-XSS-Protection" exists-action="override">
|
|
222
|
+
<value>1; mode=block</value>
|
|
223
|
+
</set-header>
|
|
224
|
+
<set-header name="Content-Security-Policy" exists-action="override">
|
|
225
|
+
<value>default-src 'self' data:</value>
|
|
226
|
+
</set-header>
|
|
227
|
+
<set-header name="X-Frame-Options" exists-action="override">
|
|
228
|
+
<value>Deny</value>
|
|
229
|
+
</set-header>
|
|
230
|
+
<set-header name="X-Content-Type-Options" exists-action="override">
|
|
231
|
+
<value>nosniff</value>
|
|
232
|
+
</set-header>
|
|
233
|
+
<set-header name="Expect-Ct" exists-action="override">
|
|
234
|
+
<value>max-age=3600,enforce</value>
|
|
235
|
+
</set-header>
|
|
236
|
+
<set-header name="Cache-Control" exists-action="override">
|
|
237
|
+
<value>none</value>
|
|
238
|
+
</set-header>
|
|
239
|
+
<set-header name="X-Powered-By" exists-action="delete" />
|
|
240
|
+
<set-header name="X-AspNet-Version" exists-action="delete" />
|
|
241
|
+
|
|
242
|
+
${pulumi.output(this._outboundPolicies).apply((os) => os.join('\n'))}
|
|
243
|
+
</outbound>
|
|
244
|
+
<on-error>
|
|
245
|
+
<base />
|
|
246
|
+
</on-error>
|
|
247
|
+
</policies>`;
|
|
248
|
+
}
|
|
249
|
+
setHeader(props) {
|
|
250
|
+
return pulumi.output(props).apply((p) => {
|
|
251
|
+
let rs = `\t<set-header name="${p.name}" exists-action="${p.type}">`;
|
|
252
|
+
if (p.value) {
|
|
253
|
+
rs += ` <value>${p.value}</value>`;
|
|
254
|
+
}
|
|
255
|
+
rs += '</set-header>';
|
|
256
|
+
return rs;
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
buildCors() {
|
|
260
|
+
const cors = !this._cors?.origins
|
|
261
|
+
? ['<origin>*</origin>']
|
|
262
|
+
: this._cors.origins.map((o) => pulumi.interpolate `<origin>${o}</origin>`);
|
|
263
|
+
this._inboundPolicies.push(pulumi.interpolate `<cors allow-credentials="${Array.isArray(this._cors?.origins)}">
|
|
264
|
+
<allowed-origins>
|
|
265
|
+
${pulumi.output(cors).apply((cs) => cs.join('\n'))}
|
|
266
|
+
</allowed-origins>
|
|
267
|
+
<allowed-methods preflight-result-max-age="300">
|
|
268
|
+
<method>*</method>
|
|
269
|
+
</allowed-methods>
|
|
270
|
+
<allowed-headers>
|
|
271
|
+
<header>*</header>
|
|
272
|
+
</allowed-headers>
|
|
273
|
+
</cors>`);
|
|
274
|
+
}
|
|
275
|
+
buildCertVerification() {
|
|
276
|
+
if (!this._clientCertVerification)
|
|
277
|
+
return;
|
|
278
|
+
this._inboundPolicies.push(pulumi.interpolate `<choose>
|
|
279
|
+
<when condition="@(context.Request.Certificate == null${this._clientCertVerification.verifyCert ? ' || !context.Request.Certificate.VerifyNoRevocation()' : ''}${this._clientCertVerification.issuer
|
|
280
|
+
? ` || context.Request.Certificate.Issuer != "${this._clientCertVerification.issuer}"`
|
|
281
|
+
: ''}${this._clientCertVerification.subject
|
|
282
|
+
? ` || context.Request.Certificate.SubjectName.Name != "${this._clientCertVerification.subject}"`
|
|
283
|
+
: ''}${this._clientCertVerification.thumbprint
|
|
284
|
+
? ` || context.Request.Certificate.Thumbprint != "${this._clientCertVerification.thumbprint}"`
|
|
285
|
+
: ''})" >
|
|
286
|
+
<return-response>
|
|
287
|
+
<set-status code="403" reason="Invalid client certificate" />
|
|
288
|
+
</return-response>
|
|
289
|
+
</when>
|
|
290
|
+
</choose>`);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
exports.ApimPolicyBuilder = ApimPolicyBuilder;
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbVBvbGljeUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpbS9BcGltUG9saWN5QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBdUM7QUFDdkMsMENBQXdDO0FBQ3hDLHVEQUF5QztBQUl6QyxJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsdUNBQXFCLENBQUE7SUFDckIsK0JBQWEsQ0FBQTtJQUNiLG1DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxjQUFjLDhCQUFkLGNBQWMsUUFLekI7QUE0QkQsTUFBYSxpQkFBaUI7SUFDcEIsZ0JBQWdCLEdBQTJCLEVBQUUsQ0FBQztJQUM5QyxpQkFBaUIsR0FBMkIsRUFBRSxDQUFDO0lBQy9DLEtBQUssR0FBNkIsU0FBUyxDQUFDO0lBQzVDLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0IsdUJBQXVCLENBQWtDO0lBRTFELFVBQVUsQ0FBQyxHQUF5QjtRQUN6QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUEsa0NBQWtDLEdBQUcsTUFBTSxDQUFDLENBQUM7UUFDMUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sWUFBWSxDQUFDLFNBQWtCLEVBQUUsR0FBeUI7UUFDL0QsSUFBSSxTQUFTO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxLQUF3QjtRQUM5QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0IsT0FBTyxJQUFJLENB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
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as apim from '@pulumi/azure-native/apimanagement';
|
|
2
|
+
import * as pulumi from '@pulumi/pulumi';
|
|
3
|
+
import { ApimApiSetArgs } from './ApimApiSet';
|
|
4
|
+
import { BaseResourceComponent, CommonBaseArgs } from '../base';
|
|
5
|
+
import { ApimPolicyBuilder } from './ApimPolicyBuilder';
|
|
6
|
+
import * as types from '../types';
|
|
7
|
+
export interface ApimProductArgs extends CommonBaseArgs, Omit<apim.ProductArgs, types.CommonProps | 'displayName' | 'subscriptionRequired'> {
|
|
8
|
+
displayName?: pulumi.Input<string>;
|
|
9
|
+
subscriptionRequired?: boolean;
|
|
10
|
+
enableDiagnostic?: boolean;
|
|
11
|
+
policyBuilder?: (policy: ApimPolicyBuilder) => ApimPolicyBuilder;
|
|
12
|
+
apiSets?: Array<Omit<ApimApiSetArgs, types.CommonProps | 'serviceName' | 'vaultInfo' | 'enableDiagnostic' | 'productId'> & {
|
|
13
|
+
name: string;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
export declare class ApimProduct extends BaseResourceComponent<ApimProductArgs> {
|
|
17
|
+
readonly id: pulumi.Output<string>;
|
|
18
|
+
readonly resourceName: pulumi.Output<string>;
|
|
19
|
+
constructor(name: string, args: ApimProductArgs, opts?: pulumi.ComponentResourceOptions);
|
|
20
|
+
getOutputs(): {
|
|
21
|
+
id: pulumi.Output<string>;
|
|
22
|
+
resourceName: pulumi.Output<string>;
|
|
23
|
+
};
|
|
24
|
+
private buildProduct;
|
|
25
|
+
private buildSubscription;
|
|
26
|
+
private buildApiSets;
|
|
27
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ApimProduct = void 0;
|
|
37
|
+
const apim = __importStar(require("@pulumi/azure-native/apimanagement"));
|
|
38
|
+
const pulumi = __importStar(require("@pulumi/pulumi"));
|
|
39
|
+
const ApimApiSet_1 = require("./ApimApiSet");
|
|
40
|
+
const base_1 = require("../base");
|
|
41
|
+
const ApimPolicyBuilder_1 = require("./ApimPolicyBuilder");
|
|
42
|
+
class ApimProduct extends base_1.BaseResourceComponent {
|
|
43
|
+
id;
|
|
44
|
+
resourceName;
|
|
45
|
+
constructor(name, args, opts) {
|
|
46
|
+
super('ApimProduct', name, args, opts);
|
|
47
|
+
const product = this.buildProduct();
|
|
48
|
+
this.buildSubscription(product);
|
|
49
|
+
this.buildApiSets(product);
|
|
50
|
+
this.id = product.id;
|
|
51
|
+
this.resourceName = product.name;
|
|
52
|
+
this.registerOutputs();
|
|
53
|
+
}
|
|
54
|
+
getOutputs() {
|
|
55
|
+
return {
|
|
56
|
+
id: this.id,
|
|
57
|
+
resourceName: this.resourceName,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
buildProduct() {
|
|
61
|
+
const { rsGroup, productId, displayName, description, policyBuilder, serviceName, approvalRequired, apiSets, enableDiagnostic, groupRoles, vaultInfo, subscriptionRequired = true, subscriptionsLimit = 5, ...others } = this.args;
|
|
62
|
+
const product = new apim.Product(this.name, {
|
|
63
|
+
...rsGroup,
|
|
64
|
+
...others,
|
|
65
|
+
serviceName,
|
|
66
|
+
approvalRequired: subscriptionRequired ? approvalRequired : undefined,
|
|
67
|
+
subscriptionRequired: subscriptionRequired ?? true,
|
|
68
|
+
subscriptionsLimit: subscriptionRequired ? subscriptionsLimit : undefined,
|
|
69
|
+
productId: productId ?? this.name,
|
|
70
|
+
displayName: displayName ?? this.name,
|
|
71
|
+
description: description ?? this.name,
|
|
72
|
+
}, { ...this.opts, parent: this });
|
|
73
|
+
if (policyBuilder) {
|
|
74
|
+
new apim.ProductPolicy(`${this.name}-policy`, {
|
|
75
|
+
...rsGroup,
|
|
76
|
+
serviceName,
|
|
77
|
+
productId: productId ?? this.name,
|
|
78
|
+
format: 'xml',
|
|
79
|
+
policyId: 'policy',
|
|
80
|
+
value: policyBuilder(new ApimPolicyBuilder_1.ApimPolicyBuilder()).build(),
|
|
81
|
+
}, { dependsOn: product, deletedWith: product, parent: this });
|
|
82
|
+
}
|
|
83
|
+
return product;
|
|
84
|
+
}
|
|
85
|
+
buildSubscription(product) {
|
|
86
|
+
const { productId, serviceName, rsGroup, subscriptionRequired } = this.args;
|
|
87
|
+
if (!subscriptionRequired)
|
|
88
|
+
return;
|
|
89
|
+
const subName = `${this.name}-sub`;
|
|
90
|
+
const primaryKey = `apim-${subName}-primary`;
|
|
91
|
+
const secondaryKey = `apim-${subName}-secondary`;
|
|
92
|
+
const primaryPass = this.createPassword({ name: primaryKey, length: 50, policy: 'yearly' });
|
|
93
|
+
const secondaryPass = this.createPassword({ name: secondaryKey, length: 50, policy: 'yearly' });
|
|
94
|
+
const sub = new apim.Subscription(subName, {
|
|
95
|
+
...rsGroup,
|
|
96
|
+
sid: subName,
|
|
97
|
+
displayName: subName,
|
|
98
|
+
serviceName,
|
|
99
|
+
scope: pulumi.interpolate `/products/${productId ?? this.name}`,
|
|
100
|
+
state: 'active',
|
|
101
|
+
primaryKey: primaryPass.value,
|
|
102
|
+
secondaryKey: secondaryPass.value,
|
|
103
|
+
}, { dependsOn: [product, primaryPass, secondaryPass], deletedWith: product, parent: this });
|
|
104
|
+
this.addSecrets({
|
|
105
|
+
[primaryKey]: primaryPass.value,
|
|
106
|
+
[secondaryKey]: secondaryPass.value,
|
|
107
|
+
});
|
|
108
|
+
return sub;
|
|
109
|
+
}
|
|
110
|
+
buildApiSets(product) {
|
|
111
|
+
const { productId, rsGroup, serviceName, enableDiagnostic, subscriptionRequired, apiSets } = this.args;
|
|
112
|
+
if (!apiSets)
|
|
113
|
+
return;
|
|
114
|
+
return apiSets.map((s) => new ApimApiSet_1.ApimApiSet(s.name, { ...s, rsGroup, serviceName, productId: productId ?? this.name, enableDiagnostic, subscriptionRequired }, { dependsOn: product, deletedWith: product, parent: this }));
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.ApimProduct = ApimProduct;
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbVByb2R1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpbS9BcGltUHJvZHVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5RUFBMkQ7QUFDM0QsdURBQXlDO0FBRXpDLDZDQUEwRDtBQUMxRCxrQ0FBZ0U7QUFFaEUsMkRBQXdEO0FBaUJ4RCxNQUFhLFdBQVksU0FBUSw0QkFBc0M7SUFDckQsRUFBRSxDQUF3QjtJQUMxQixZQUFZLENBQXdCO0lBRXBELFlBQVksSUFBWSxFQUFFLElBQXFCLEVBQUUsSUFBc0M7UUFDckYsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU0sVUFBVTtRQUNmLE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsQ0FBQztJQUNKLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sRUFDSixPQUFPLEVBQ1AsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsT0FBTyxFQUNQLGdCQUFnQixFQUNoQixVQUFVLEVBQ1YsU0FBUyxFQUNULG9CQUFvQixHQUFHLElBQUksRUFDM0Isa0JBQWtCLEdBQUcsQ0FBQyxFQUN0QixHQUFHLE1BQU0sRUFDVixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFFZCxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQzlCLElBQUksQ0FBQyxJQUFJLEVBQ1Q7WUFDRSxHQUFHLE9BQU87WUFDVixHQUFHLE1BQU07WUFDVCxXQUFXO1lBQ1gsZ0JBQWdCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3JFLG9CQUFvQixFQUFFLG9CQUFvQixJQUFJLElBQUk7WUFDbEQsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3pFLFNBQVMsRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLElBQUk7WUFDakMsV0FBVyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsSUFBSTtZQUNyQyxXQUFXLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJO1NBQ3RDLEVBQ0QsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMvQixDQUFDO1FBRUYsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQ3BCLEdBQUcsSUFBSSxDQUFDLElBQUksU0FBUyxFQUNyQjtnQkFDRSxHQUFHLE9BQU87Z0JBQ1YsV0FBVztnQkFDWCxTQUFTLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJO2dCQUNqQyxNQUFNLEVBQUUsS0FBSztnQkFDYixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsS0FBSyxFQUFFLGFBQWEsQ0FBQyxJQUFJLHFDQUFpQixFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUU7YUFDdEQsRUFDRCxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQzNELENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQXFCO1FBQzdDLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDNUUsSUFBSSxDQUFDLG9CQUFvQjtZQUFFLE9BQU87UUFFbEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUM7UUFDbkMsTUFBTSxVQUFVLEdBQUcsUUFBUSxPQUFPLFVBQVUsQ0FBQztRQUM3QyxNQUFNLFlBQVksR0FBRyxRQUFRLE9BQU8sWUFBWSxDQUFDO1FBQ2pELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDNUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUVoRyxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQy9CLE9BQU8sRUFDUDtZQUNFLEdBQUcsT0FBTztZQUNWLEdBQUcsRUFBRSxPQUFPO1lBQ1osV0FBVyxFQUFFLE9BQU87WUFDcEIsV0FBVztZQUNYLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFBLGFBQWEsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDOUQsS0FBSyxFQUFFLFFBQVE7WUFDZixVQUFVLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDN0IsWUFBWSxFQUFFLGFBQWEsQ0FBQyxLQUFLO1NBQ2xDLEVBQ0QsRUFBRSxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUN6RixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNkLENBQUMsVUFBVSxDQUFDLEVBQUUsV0FBVyxDQUFDLEtBQUs7WUFDL0IsQ0FBQyxZQUFZLENBQUMsRUFBRSxhQUFhLENBQUMsS0FBSztTQUNwQyxDQUFDLENBQUM7UUFFSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTyxZQUFZLENBQUMsT0FBcUI7UUFDeEMsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkcsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRXJCLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FDaEIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLElBQUksdUJBQVUsQ0FDWixDQUFDLENBQUMsSUFBSSxFQUNOLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsRUFDekcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUMzRCxDQUNKLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF6SEQsa0NBeUhDIn0=
|
package/apim/index.d.ts
ADDED
package/apim/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Apim"), exports);
|
|
18
|
+
__exportStar(require("./ApimPolicyBuilder"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXVCO0FBQ3ZCLHNEQUFvQyJ9
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation schema for OpenAPI Specification 3.0.X.
|
|
3
|
+
*/
|
|
4
|
+
export interface OpenAPI3 {
|
|
5
|
+
components?: Components;
|
|
6
|
+
externalDocs?: ExternalDocumentation;
|
|
7
|
+
info: Info;
|
|
8
|
+
openapi: string;
|
|
9
|
+
paths: Paths;
|
|
10
|
+
security?: {
|
|
11
|
+
[key: string]: string[];
|
|
12
|
+
}[];
|
|
13
|
+
servers?: Server[];
|
|
14
|
+
tags?: Tag[];
|
|
15
|
+
}
|
|
16
|
+
export interface Components {
|
|
17
|
+
callbacks?: {
|
|
18
|
+
[key: string]: any;
|
|
19
|
+
};
|
|
20
|
+
examples?: {
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
};
|
|
23
|
+
headers?: {
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
};
|
|
26
|
+
links?: {
|
|
27
|
+
[key: string]: any;
|
|
28
|
+
};
|
|
29
|
+
parameters?: {
|
|
30
|
+
[key: string]: any;
|
|
31
|
+
};
|
|
32
|
+
requestBodies?: {
|
|
33
|
+
[key: string]: any;
|
|
34
|
+
};
|
|
35
|
+
responses?: {
|
|
36
|
+
[key: string]: any;
|
|
37
|
+
};
|
|
38
|
+
schemas?: {
|
|
39
|
+
[key: string]: any;
|
|
40
|
+
};
|
|
41
|
+
securitySchemes?: {
|
|
42
|
+
[key: string]: any;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export interface ExternalDocumentation {
|
|
46
|
+
description?: string;
|
|
47
|
+
url: string;
|
|
48
|
+
}
|
|
49
|
+
export interface Info {
|
|
50
|
+
contact?: Contact;
|
|
51
|
+
description?: string;
|
|
52
|
+
license?: License;
|
|
53
|
+
termsOfService?: string;
|
|
54
|
+
title: string;
|
|
55
|
+
version: string;
|
|
56
|
+
}
|
|
57
|
+
export interface Contact {
|
|
58
|
+
email?: string;
|
|
59
|
+
name?: string;
|
|
60
|
+
url?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface License {
|
|
63
|
+
name: string;
|
|
64
|
+
url?: string;
|
|
65
|
+
}
|
|
66
|
+
export interface Paths {
|
|
67
|
+
[key: string]: any;
|
|
68
|
+
}
|
|
69
|
+
export interface Server {
|
|
70
|
+
description?: string;
|
|
71
|
+
url: string;
|
|
72
|
+
variables?: {
|
|
73
|
+
[key: string]: ServerVariable;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export interface ServerVariable {
|
|
77
|
+
default: string;
|
|
78
|
+
description?: string;
|
|
79
|
+
enum?: string[];
|
|
80
|
+
}
|
|
81
|
+
export interface Tag {
|
|
82
|
+
description?: string;
|
|
83
|
+
externalDocs?: ExternalDocumentation;
|
|
84
|
+
name: string;
|
|
85
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbkFQSTNUeXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaW0vb3BlbkFQSTNUeXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|