@drunk-pulumi/azure-components 1.1.36 → 1.1.38
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/apim/ApimApi.js +10 -2
- package/apim/openApiHelper.d.ts +1 -1
- package/apim/openApiHelper.js +37 -9
- package/package.json +1 -1
package/apim/ApimApi.js
CHANGED
|
@@ -84,7 +84,15 @@ class ApimApi extends base_1.BaseResourceComponent {
|
|
|
84
84
|
? pulumi.interpolate `${serviceUrl}/${apiVersion}`
|
|
85
85
|
: `https://${helpers_1.stackInfo.organization}.com/${apiVersion}`,
|
|
86
86
|
format: openSpecUrl ? apim.ContentFormat.Openapi_json : undefined,
|
|
87
|
-
value: openSpecUrl
|
|
87
|
+
value: openSpecUrl
|
|
88
|
+
? pulumi.output(openApi.getImportConfig(openSpecUrl, apiVersion)).apply((v) => {
|
|
89
|
+
if (v === undefined) {
|
|
90
|
+
console.error(`APIM-openApi: Not able to load spec from: ${openSpecUrl}`);
|
|
91
|
+
}
|
|
92
|
+
// ApiArgs.value does not allow undefined, so keep prior empty-string fallback behavior.
|
|
93
|
+
return v ?? '';
|
|
94
|
+
})
|
|
95
|
+
: undefined,
|
|
88
96
|
}, {
|
|
89
97
|
...this.opts,
|
|
90
98
|
parent: this,
|
|
@@ -191,4 +199,4 @@ class ApimApi extends base_1.BaseResourceComponent {
|
|
|
191
199
|
}
|
|
192
200
|
}
|
|
193
201
|
exports.ApimApi = ApimApi;
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbUFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGltL0FwaW1BcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0NBQWdFO0FBQ2hFLHlFQUEyRDtBQUMzRCx1REFBeUM7QUFDekMseURBQTJDO0FBQzNDLDJEQUF3RDtBQUN4RCx3Q0FBaUQ7QUFzQ2pELE1BQWEsT0FBUSxTQUFRLDRCQUFrQztJQUM3QyxFQUFFLENBQXdCO0lBQzFCLFlBQVksQ0FBd0I7SUFFcEQsWUFBWSxJQUFZLEVBQUUsSUFBaUIsRUFBRSxJQUFzQztRQUNqRixLQUFLLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixpQkFBaUIsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO1NBQ3RF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
|
package/apim/openApiHelper.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const getImportConfig: (specUrl: string, version: string) => Promise<string>;
|
|
1
|
+
export declare const getImportConfig: (specUrl: string, version: string) => Promise<string | undefined>;
|
package/apim/openApiHelper.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getImportConfig = void 0;
|
|
4
|
+
const promises_1 = require("node:fs/promises");
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
4
6
|
const removeVersion = (data, version) => {
|
|
5
7
|
if (!data?.paths) {
|
|
6
8
|
console.error(`APIM-removeVersion: There is no paths found in`, data);
|
|
@@ -15,22 +17,48 @@ const removeVersion = (data, version) => {
|
|
|
15
17
|
data.paths = newPaths;
|
|
16
18
|
return data;
|
|
17
19
|
};
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
.
|
|
20
|
+
const isHttpSpecUrl = (specUrl) => /^https?:\/\//i.test(specUrl);
|
|
21
|
+
const downloadRemoteSpecFile = async (fileUrl) => {
|
|
22
|
+
try {
|
|
23
|
+
const response = await fetch(fileUrl, { method: 'GET' });
|
|
24
|
+
if (!response.ok) {
|
|
25
|
+
console.error(`Not able to get spec file from: ${fileUrl}. Status: ${response.status}`);
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
return (await response.json());
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
23
31
|
console.error(`Not able to get spec file from: ${fileUrl}`, error);
|
|
24
32
|
return undefined;
|
|
25
|
-
}
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const downloadLocalSpecFile = async (filePath) => {
|
|
36
|
+
try {
|
|
37
|
+
await (0, promises_1.access)(filePath, node_fs_1.constants.F_OK);
|
|
38
|
+
const fileContent = await (0, promises_1.readFile)(filePath, 'utf8');
|
|
39
|
+
try {
|
|
40
|
+
return JSON.parse(fileContent);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.error(`Invalid JSON in spec file: ${filePath}`, error);
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error(`Not able to read spec file from: ${filePath}`, error);
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const downloadSpecFile = async (specUrl) => {
|
|
53
|
+
return isHttpSpecUrl(specUrl) ? downloadRemoteSpecFile(specUrl) : downloadLocalSpecFile(specUrl);
|
|
26
54
|
};
|
|
27
55
|
const getImportConfig = async (specUrl, version) => {
|
|
28
56
|
const spec = await downloadSpecFile(specUrl);
|
|
29
57
|
if (!spec)
|
|
30
|
-
return
|
|
31
|
-
//Remove
|
|
58
|
+
return undefined;
|
|
59
|
+
// Remove version prefix from paths.
|
|
32
60
|
const data = removeVersion(spec, version);
|
|
33
61
|
return JSON.stringify(data);
|
|
34
62
|
};
|
|
35
63
|
exports.getImportConfig = getImportConfig;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbkFwaUhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGltL29wZW5BcGlIZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsK0NBQW9EO0FBQ3BELHFDQUFvQztBQUVwQyxNQUFNLGFBQWEsR0FBRyxDQUFDLElBQWMsRUFBRSxPQUFlLEVBQVksRUFBRTtJQUNsRSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0RBQWdELEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsRUFBUyxDQUFDO0lBRTNCLDJCQUEyQjtJQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNwQyxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztJQUN0QixPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBZSxFQUFXLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRWxGLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxFQUFFLE9BQWUsRUFBaUMsRUFBRTtJQUN0RixJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLE9BQU8sYUFBYSxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN4RixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFhLENBQUM7SUFDN0MsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxPQUFPLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuRSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLEVBQUUsUUFBZ0IsRUFBaUMsRUFBRTtJQUN0RixJQUFJLENBQUM7UUFDSCxNQUFNLElBQUEsaUJBQU0sRUFBQyxRQUFRLEVBQUUsbUJBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUEsbUJBQVEsRUFBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBYSxDQUFDO1FBQzdDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDL0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckUsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLE9BQWUsRUFBaUMsRUFBRTtJQUNoRixPQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25HLENBQUMsQ0FBQztBQUVLLE1BQU0sZUFBZSxHQUFHLEtBQUssRUFBRSxPQUFlLEVBQUUsT0FBZSxFQUErQixFQUFFO0lBQ3JHLE1BQU0sSUFBSSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUU1QixvQ0FBb0M7SUFDcEMsTUFBTSxJQUFJLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBUFcsUUFBQSxlQUFlLG1CQU8xQiJ9
|