@cdktn/hcl2cdk 0.23.0-pre.8 → 0.23.0
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/ambient.d.ts +0 -1
- package/build/__tests__/coerceType.test.js +165 -0
- package/build/__tests__/expressionToTs.test.js +693 -0
- package/build/__tests__/expressions.test.js +415 -0
- package/build/__tests__/findExpressionType.test.js +105 -0
- package/build/__tests__/functions.test.js +605 -0
- package/build/__tests__/generation.test.js +45 -0
- package/build/__tests__/jsii-rosetta-workarounds.test.js +86 -0
- package/build/__tests__/partialCode.test.js +390 -0
- package/build/__tests__/terraformSchema.test.js +105 -0
- package/build/__tests__/testHelpers.js +16 -0
- package/build/coerceType.js +240 -0
- package/build/dynamic-blocks.js +44 -0
- package/build/expressions.js +633 -0
- package/build/function-bindings/functions.generated.js +1142 -0
- package/build/function-bindings/functions.js +73 -0
- package/{lib → build}/generation.js +4 -4
- package/{lib → build}/index.d.ts +2 -2
- package/build/index.js +364 -0
- package/build/iteration.js +87 -0
- package/build/jsii-rosetta-workarounds.js +126 -0
- package/build/partialCode.js +116 -0
- package/build/provider.js +40 -0
- package/build/references.js +141 -0
- package/build/schema.js +81 -0
- package/build/telemetryAllowList.json +24 -0
- package/build/terraformSchema.js +136 -0
- package/build/types.js +3 -0
- package/build/utils.js +25 -0
- package/build/variables.js +172 -0
- package/package.json +13 -14
- package/tsconfig.json +4 -2
- package/lib/__tests__/coerceType.test.js +0 -165
- package/lib/__tests__/expressionToTs.test.js +0 -693
- package/lib/__tests__/expressions.test.js +0 -415
- package/lib/__tests__/findExpressionType.test.js +0 -105
- package/lib/__tests__/functions.test.js +0 -605
- package/lib/__tests__/generation.test.js +0 -45
- package/lib/__tests__/jsii-rosetta-workarounds.test.js +0 -86
- package/lib/__tests__/partialCode.test.js +0 -390
- package/lib/__tests__/terraformSchema.test.js +0 -105
- package/lib/__tests__/testHelpers.js +0 -16
- package/lib/coerceType.js +0 -240
- package/lib/dynamic-blocks.js +0 -44
- package/lib/expressions.js +0 -634
- package/lib/function-bindings/functions.generated.js +0 -1142
- package/lib/function-bindings/functions.js +0 -73
- package/lib/index.js +0 -364
- package/lib/iteration.js +0 -87
- package/lib/jsii-rosetta-workarounds.js +0 -126
- package/lib/partialCode.js +0 -116
- package/lib/provider.js +0 -40
- package/lib/references.js +0 -141
- package/lib/schema.js +0 -81
- package/lib/terraformSchema.js +0 -136
- package/lib/types.js +0 -3
- package/lib/utils.js +0 -25
- package/lib/variables.js +0 -172
- /package/{lib → build}/__tests__/coerceType.test.d.ts +0 -0
- /package/{lib → build}/__tests__/expressionToTs.test.d.ts +0 -0
- /package/{lib → build}/__tests__/expressions.test.d.ts +0 -0
- /package/{lib → build}/__tests__/findExpressionType.test.d.ts +0 -0
- /package/{lib → build}/__tests__/functions.test.d.ts +0 -0
- /package/{lib → build}/__tests__/generation.test.d.ts +0 -0
- /package/{lib → build}/__tests__/jsii-rosetta-workarounds.test.d.ts +0 -0
- /package/{lib → build}/__tests__/partialCode.test.d.ts +0 -0
- /package/{lib → build}/__tests__/terraformSchema.test.d.ts +0 -0
- /package/{lib → build}/__tests__/testHelpers.d.ts +0 -0
- /package/{lib → build}/coerceType.d.ts +0 -0
- /package/{lib → build}/dynamic-blocks.d.ts +0 -0
- /package/{lib → build}/expressions.d.ts +0 -0
- /package/{lib → build}/function-bindings/functions.d.ts +0 -0
- /package/{lib → build}/function-bindings/functions.generated.d.ts +0 -0
- /package/{lib → build}/generation.d.ts +0 -0
- /package/{lib → build}/iteration.d.ts +0 -0
- /package/{lib → build}/jsii-rosetta-workarounds.d.ts +0 -0
- /package/{lib → build}/partialCode.d.ts +0 -0
- /package/{lib → build}/provider.d.ts +0 -0
- /package/{lib → build}/references.d.ts +0 -0
- /package/{lib → build}/schema.d.ts +0 -0
- /package/{lib → build}/terraformSchema.d.ts +0 -0
- /package/{lib → build}/types.d.ts +0 -0
- /package/{lib → build}/utils.d.ts +0 -0
- /package/{lib → build}/variables.d.ts +0 -0
- /package/{lib → src}/telemetryAllowList.json +0 -0
package/lib/iteration.js
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resourceStats = exports.forEachNamespaced = exports.forEachProvider = exports.forEachImport = exports.forEachGlobal = void 0;
|
|
4
|
-
const telemetryAllowList_json_1 = require("./telemetryAllowList.json");
|
|
5
|
-
// locals, variables, and outputs are global key value maps
|
|
6
|
-
function forEachGlobal(scope, prefix, record, iterator) {
|
|
7
|
-
return Object.entries(record || {}).reduce((carry, [key, item]) => {
|
|
8
|
-
const id = `${prefix}.${key}`;
|
|
9
|
-
return {
|
|
10
|
-
...carry,
|
|
11
|
-
[id]: {
|
|
12
|
-
code: async (graph) => await iterator(scope, key, id, item, graph),
|
|
13
|
-
value: item,
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
}, {});
|
|
17
|
-
}
|
|
18
|
-
exports.forEachGlobal = forEachGlobal;
|
|
19
|
-
function forEachImport(scope, prefix, record, iterator) {
|
|
20
|
-
return (record || []).reduce((carry, item) => {
|
|
21
|
-
const target = item.to.startsWith("${") && item.to.endsWith("}")
|
|
22
|
-
? item.to.substring(2, item.to.length - 1)
|
|
23
|
-
: item.to;
|
|
24
|
-
const id = `${prefix}.${target}`;
|
|
25
|
-
return {
|
|
26
|
-
...carry,
|
|
27
|
-
[id]: {
|
|
28
|
-
code: async (graph) => await iterator(scope, id, item, graph),
|
|
29
|
-
value: item,
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
}, {});
|
|
33
|
-
}
|
|
34
|
-
exports.forEachImport = forEachImport;
|
|
35
|
-
function forEachProvider(scope, record, iterator) {
|
|
36
|
-
return Object.entries(record || {}).reduce((carry, [key, items]) => {
|
|
37
|
-
return {
|
|
38
|
-
...carry,
|
|
39
|
-
...items.reduce((innerCarry, item) => {
|
|
40
|
-
const id = item.alias ? `${key}.${item.alias}` : `${key}`;
|
|
41
|
-
return {
|
|
42
|
-
...innerCarry,
|
|
43
|
-
[id]: {
|
|
44
|
-
code: async (graph) => await iterator(scope, key, id, item, graph),
|
|
45
|
-
value: item,
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
}, {}),
|
|
49
|
-
};
|
|
50
|
-
}, {});
|
|
51
|
-
}
|
|
52
|
-
exports.forEachProvider = forEachProvider;
|
|
53
|
-
// data and resource are namespaced key value maps
|
|
54
|
-
function forEachNamespaced(scope, record, iterator, prefix) {
|
|
55
|
-
return Object.entries(record || {}).reduce((outerCarry, [type, items]) => ({
|
|
56
|
-
...outerCarry,
|
|
57
|
-
...Object.entries(items).reduce((innerCarry, [key, item]) => {
|
|
58
|
-
const prefixedType = prefix ? `${prefix}.${type}` : type;
|
|
59
|
-
const id = prefix ? `${prefix}.${type}.${key}` : `${type}.${key}`;
|
|
60
|
-
return {
|
|
61
|
-
...innerCarry,
|
|
62
|
-
[id]: {
|
|
63
|
-
code: async (graph) => await iterator(scope, prefixedType, key, id, item, graph),
|
|
64
|
-
value: item,
|
|
65
|
-
},
|
|
66
|
-
};
|
|
67
|
-
}, {}),
|
|
68
|
-
}), {});
|
|
69
|
-
}
|
|
70
|
-
exports.forEachNamespaced = forEachNamespaced;
|
|
71
|
-
function resourceStats(obj) {
|
|
72
|
-
return Object.entries(obj).reduce((carry, [key, value]) => {
|
|
73
|
-
const [provider, ...resourceParts] = key.split("_");
|
|
74
|
-
const shouldBeTracked = telemetryAllowList_json_1.providers.includes(provider);
|
|
75
|
-
const providerKey = shouldBeTracked ? provider : "other";
|
|
76
|
-
const resourceName = shouldBeTracked ? resourceParts.join("_") : "other";
|
|
77
|
-
return {
|
|
78
|
-
...carry,
|
|
79
|
-
[providerKey]: {
|
|
80
|
-
...(carry[providerKey] || {}),
|
|
81
|
-
[resourceName]: Object.keys(value).length,
|
|
82
|
-
},
|
|
83
|
-
};
|
|
84
|
-
}, {});
|
|
85
|
-
}
|
|
86
|
-
exports.resourceStats = resourceStats;
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiaXRlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLHVFQUFtRjtBQUluRiwyREFBMkQ7QUFDM0QsU0FBZ0IsYUFBYSxDQUMzQixLQUFtQixFQUNuQixNQUFjLEVBQ2QsTUFBcUMsRUFDckMsUUFNZTtJQUVmLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7UUFDaEUsTUFBTSxFQUFFLEdBQUcsR0FBRyxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDOUIsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFvQixFQUFFLEVBQUUsQ0FDbkMsTUFBTSxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQztnQkFDN0MsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLENBQUM7SUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDVCxDQUFDO0FBdkJELHNDQXVCQztBQUVELFNBQWdCLGFBQWEsQ0FDM0IsS0FBbUIsRUFDbkIsTUFBYyxFQUNkLE1BQTRCLEVBQzVCLFFBS2U7SUFLZixPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUMzQyxNQUFNLE1BQU0sR0FDVixJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxD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QztRQUNKLENBQUMsRUFDRCxFQUdDLENBQ0Y7S0FDRixDQUFDLEVBQ0YsRUFHQyxDQUNGLENBQUM7QUFDSixDQUFDO0FBeENELDhDQXdDQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxHQUE0QztJQUN4RSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUMvQixDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1FBQ3RCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsR0FBRyxhQUFhLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sZUFBZSxHQUFHLG1DQUF5QixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRSxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3pELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBRXpFLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNiLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUM3QixDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTTthQUMxQztTQUNGLENBQUM7SUFDSixDQUFDLEVBQ0QsRUFBNEMsQ0FDN0MsQ0FBQztBQUNKLENBQUM7QUFsQkQsc0NBa0JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IERpcmVjdGVkR3JhcGggfSBmcm9tIFwiZ3JhcGhvbG9neVwiO1xuaW1wb3J0IHsgcHJvdmlkZXJzIGFzIHRlbGVtZXRyeUFsbG93ZWRQcm92aWRlcnMgfSBmcm9tIFwiLi90ZWxlbWV0cnlBbGxvd0xpc3QuanNvblwiO1xuaW1wb3J0IHsgUHJvZ3JhbVNjb3BlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IEltcG9ydCB9IGZyb20gXCIuL3NjaGVtYVwiO1xuXG4vLyBsb2NhbHMsIHZhcmlhYmxlcywgYW5kIG91dHB1dHMgYXJlIGdsb2JhbCBrZXkgdmFsdWUgbWFwc1xuZXhwb3J0IGZ1bmN0aW9uIGZvckVhY2hHbG9iYWw8VCwgUj4oXG4gIHNjb3BlOiBQcm9ncmFtU2NvcGUsXG4gIHByZWZpeDogc3RyaW5nLFxuICByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIFQ+IHwgdW5kZWZpbmVkLFxuICBpdGVyYXRvcjogKFxuICAgIHNjb3BlOiBQcm9ncmFtU2NvcGUsXG4gICAga2V5OiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB2YWx1ZTogVCxcbiAgICBncmFwaDogRGlyZWN0ZWRHcmFwaCxcbiAgKSA9PiBQcm9taXNlPFI+LFxuKTogUmVjb3JkPHN0cmluZywgeyBjb2RlOiAoZ3JhcGg6IERpcmVjdGVkR3JhcGgpID0+IFByb21pc2U8Uj47IHZhbHVlOiBUIH0+IHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlY29yZCB8fCB7fSkucmVkdWNlKChjYXJyeSwgW2tleSwgaXRlbV0pID0+IHtcbiAgICBjb25zdCBpZCA9IGAke3ByZWZpeH0uJHtrZXl9YDtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY2FycnksXG4gICAgICBbaWRdOiB7XG4gICAgICAgIGNvZGU6IGFzeW5jIChncmFwaDogRGlyZWN0ZWRHcmFwaCkgPT5cbiAgICAgICAgICBhd2FpdCBpdGVyYXRvcihzY29wZSwga2V5LCBpZCwgaXRlbSwgZ3JhcGgpLFxuICAgICAgICB2YWx1ZTogaXRlbSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSwge30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaEltcG9ydDxSPihcbiAgc2NvcGU6IFByb2dyYW1TY29wZSxcbiAgcHJlZml4OiBzdHJpbmcsXG4gIHJlY29yZDogSW1wb3J0W10gfCB1bmRlZmluZWQsXG4gIGl0ZXJhdG9yOiAoXG4gICAgc2NvcGU6IFByb2dyYW1TY29wZSxcbiAgICBpZDogc3RyaW5nLFxuICAgIHZhbHVlOiBJbXBvcnQsXG4gICAgZ3JhcGg6IERpcmVjdGVkR3JhcGgsXG4gICkgPT4gUHJvbWlzZTxSPixcbik6IFJlY29yZDxcbiAgc3RyaW5nLFxuICB7IGNvZGU6IChncmFwaDogRGlyZWN0ZWRHcmFwaCkgPT4gUHJvbWlzZTxSPjsgdmFsdWU6IEltcG9ydCB9XG4+IHtcbiAgcmV0dXJuIChyZWNvcmQgfHwgW10pLnJlZHVjZSgoY2FycnksIGl0ZW0pID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPVxuICAgICAgaXRlbS50by5zdGFydHNXaXRoKFwiJHtcIikgJiYgaXRlbS50by5lbmRzV2l0aChcIn1cIilcbiAgICAgICAgPyBpdGVtLnRvLnN1YnN0cmluZygyLCBpdGVtLnRvLmxlbmd0aCAtIDEpXG4gICAgICAgIDogaXRlbS50bztcblxuICAgIGNvbnN0IGlkID0gYCR7cHJlZml4fS4ke3RhcmdldH1gO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5jYXJyeSxcbiAgICAgIFtpZF06IHtcbiAgICAgICAgY29kZTogYXN5bmMgKGdyYXBoOiBEaXJlY3RlZEdyYXBoKSA9PlxuICAgICAgICAgIGF3YWl0IGl0ZXJhdG9yKHNjb3BlLCBpZCwgaXRlbSwgZ3JhcGgpLFxuICAgICAgICB2YWx1ZTogaXRlbSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSwge30pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaFByb3ZpZGVyPFQgZXh0ZW5kcyB7IGFsaWFzPzogc3RyaW5nIH0sIFI+KFxuICBzY29wZTogUHJvZ3JhbVNjb3BlLFxuICByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIFRbXT4gfCB1bmRlZmluZWQsXG4gIGl0ZXJhdG9yOiAoXG4gICAgc2NvcGU6IFByb2dyYW1TY29wZSxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nLFxuICAgIHZhbHVlOiBULFxuICAgIGdyYXBoOiBEaXJlY3RlZEdyYXBoLFxuICApID0+IFByb21pc2U8Uj4sXG4pOiBSZWNvcmQ8c3RyaW5nLCB7IGNvZGU6IChncmFwaDogRGlyZWN0ZWRHcmFwaCkgPT4gUHJvbWlzZTxSPjsgdmFsdWU6IFQgfT4ge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVjb3JkIHx8IHt9KS5yZWR1Y2UoKGNhcnJ5LCBba2V5LCBpdGVtc10pID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uY2FycnksXG4gICAgICAuLi5pdGVtcy5yZWR1Y2UoKGlubmVyQ2FycnksIGl0ZW06IFQpID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBpdGVtLmFsaWFzID8gYCR7a2V5fS4ke2l0ZW0uYWxpYXN9YCA6IGAke2tleX1gO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmlubmVyQ2FycnksXG4gICAgICAgICAgW2lkXToge1xuICAgICAgICAgICAgY29kZTogYXN5bmMgKGdyYXBoOiBEaXJlY3RlZEdyYXBoKSA9PlxuICAgICAgICAgICAgICBhd2FpdCBpdGVyYXRvcihzY29wZSwga2V5LCBpZCwgaXRlbSwgZ3JhcGgpLFxuICAgICAgICAgICAgdmFsdWU6IGl0ZW0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0sIHt9KSxcbiAgICB9O1xuICB9LCB7fSk7XG59XG5cbi8vIGRhdGEgYW5kIHJlc291cmNlIGFyZSBuYW1lc3BhY2VkIGtleSB2YWx1ZSBtYXBzXG5leHBvcnQgZnVuY3Rpb24gZm9yRWFjaE5hbWVzcGFjZWQ8VCwgUj4oXG4gIHNjb3BlOiBQcm9ncmFtU2NvcGUsXG4gIHJlY29yZDogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgVD4+IHwgdW5kZWZpbmVkLFxuICBpdGVyYXRvcjogKFxuICAgIHNjb3BlOiBQcm9ncmFtU2NvcGUsXG4gICAgdHlwZTogc3RyaW5nLFxuICAgIGtleTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgdmFsdWU6IFQsXG4gICAgZ3JhcGg6IERpcmVjdGVkR3JhcGgsXG4gICkgPT4gUHJvbWlzZTxSPixcbiAgcHJlZml4Pzogc3RyaW5nLFxuKTogUmVjb3JkPHN0cmluZywgeyBjb2RlOiAoZ3JhcGg6IERpcmVjdGVkR3JhcGgpID0+IFByb21pc2U8Uj47IHZhbHVlOiBUIH0+IHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlY29yZCB8fCB7fSkucmVkdWNlKFxuICAgIChvdXRlckNhcnJ5LCBbdHlwZSwgaXRlbXNdKSA9PiAoe1xuICAgICAgLi4ub3V0ZXJDYXJyeSxcbiAgICAgIC4uLk9iamVjdC5lbnRyaWVzKGl0ZW1zKS5yZWR1Y2UoXG4gICAgICAgIChpbm5lckNhcnJ5LCBba2V5LCBpdGVtXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZWZpeGVkVHlwZSA9IHByZWZpeCA/IGAke3ByZWZpeH0uJHt0eXBlfWAgOiB0eXBlO1xuICAgICAgICAgIGNvbnN0IGlkID0gcHJlZml4ID8gYCR7cHJlZml4fS4ke3R5cGV9LiR7a2V5fWAgOiBgJHt0eXBlfS4ke2tleX1gO1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5pbm5lckNhcnJ5LFxuICAgICAgICAgICAgW2lkXToge1xuICAgICAgICAgICAgICBjb2RlOiBhc3luYyAoZ3JhcGg6IERpcmVjdGVkR3JhcGgpID0+XG4gICAgICAgICAgICAgICAgYXdhaXQgaXRlcmF0b3Ioc2NvcGUsIHByZWZpeGVkVHlwZSwga2V5LCBpZCwgaXRlbSwgZ3JhcGgpLFxuICAgICAgICAgICAgICB2YWx1ZTogaXRlbSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPFxuICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICB7IGNvZGU6IChncmFwaDogRGlyZWN0ZWRHcmFwaCkgPT4gUHJvbWlzZTxSPjsgdmFsdWU6IFQgfVxuICAgICAgICA+LFxuICAgICAgKSxcbiAgICB9KSxcbiAgICB7fSBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICB7IGNvZGU6IChncmFwaDogRGlyZWN0ZWRHcmFwaCkgPT4gUHJvbWlzZTxSPjsgdmFsdWU6IFQgfVxuICAgID4sXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNvdXJjZVN0YXRzKG9iajogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhvYmopLnJlZHVjZShcbiAgICAoY2FycnksIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgW3Byb3ZpZGVyLCAuLi5yZXNvdXJjZVBhcnRzXSA9IGtleS5zcGxpdChcIl9cIik7XG4gICAgICBjb25zdCBzaG91bGRCZVRyYWNrZWQgPSB0ZWxlbWV0cnlBbGxvd2VkUHJvdmlkZXJzLmluY2x1ZGVzKHByb3ZpZGVyKTtcbiAgICAgIGNvbnN0IHByb3ZpZGVyS2V5ID0gc2hvdWxkQmVUcmFja2VkID8gcHJvdmlkZXIgOiBcIm90aGVyXCI7XG4gICAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBzaG91bGRCZVRyYWNrZWQgPyByZXNvdXJjZVBhcnRzLmpvaW4oXCJfXCIpIDogXCJvdGhlclwiO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5jYXJyeSxcbiAgICAgICAgW3Byb3ZpZGVyS2V5XToge1xuICAgICAgICAgIC4uLihjYXJyeVtwcm92aWRlcktleV0gfHwge30pLFxuICAgICAgICAgIFtyZXNvdXJjZU5hbWVdOiBPYmplY3Qua2V5cyh2YWx1ZSkubGVuZ3RoLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIG51bWJlcj4+LFxuICApO1xufVxuIl19
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Copyright (c) HashiCorp, Inc
|
|
3
|
-
// SPDX-License-Identifier: MPL-2.0
|
|
4
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.replaceGoImports = exports.replaceCsharpImports = exports.replaceJavaImports = exports.replacePythonImports = void 0;
|
|
6
|
-
function replacePythonImports(code) {
|
|
7
|
-
return code
|
|
8
|
-
.split("\n")
|
|
9
|
-
.map((line) => {
|
|
10
|
-
// Replace from-import lines with lib
|
|
11
|
-
const fromImportLibRegex = /from \.\.\.gen\.providers\.([^.]+)(?:\.lib)?\.(.*) import/;
|
|
12
|
-
if (fromImportLibRegex.test(line)) {
|
|
13
|
-
return line.replace(fromImportLibRegex, "from imports.$1.$2 import");
|
|
14
|
-
}
|
|
15
|
-
// Replace import lines with lib
|
|
16
|
-
const importLibRegex = /import \.\.\.gen\.providers\.([^.]+)(?:\.lib)?\.(.*) as (.*)/;
|
|
17
|
-
if (importLibRegex.test(line)) {
|
|
18
|
-
return line.replace(importLibRegex, "import imports.$1.$2 as $3");
|
|
19
|
-
}
|
|
20
|
-
// Replace from-import lines
|
|
21
|
-
if (line.startsWith("from ...gen.providers.")) {
|
|
22
|
-
return line.replace("from ...gen.providers.", "from imports.");
|
|
23
|
-
}
|
|
24
|
-
// Replace import lines
|
|
25
|
-
if (line.startsWith("import ...gen.providers.")) {
|
|
26
|
-
return line.replace("import ...gen.providers.", "import imports.");
|
|
27
|
-
}
|
|
28
|
-
// Replace modules
|
|
29
|
-
if (line.startsWith("import ...gen.modules.")) {
|
|
30
|
-
return line.replace("import ...gen.modules.", "import imports.");
|
|
31
|
-
}
|
|
32
|
-
return line;
|
|
33
|
-
})
|
|
34
|
-
.join("\n");
|
|
35
|
-
}
|
|
36
|
-
exports.replacePythonImports = replacePythonImports;
|
|
37
|
-
function replaceJavaImports(code) {
|
|
38
|
-
return code
|
|
39
|
-
.split("\n")
|
|
40
|
-
.map((line) => {
|
|
41
|
-
// Replace using lines with lib and precices import
|
|
42
|
-
const importWithLib = /import gen\.providers\.([^.]+)(?:\.lib)?\.([^.]+)\.(.*);/;
|
|
43
|
-
const matchWithLib = line.match(importWithLib);
|
|
44
|
-
if (matchWithLib) {
|
|
45
|
-
const [, provider, resource, className] = matchWithLib;
|
|
46
|
-
return `import imports.${provider}.${resource}.${className};`;
|
|
47
|
-
}
|
|
48
|
-
// Replace using lines
|
|
49
|
-
const importWithoutLib = /import gen\.providers\.([^.]+)\.([^.]+)\.\*;/;
|
|
50
|
-
const matchWithoutLib = line.match(importWithoutLib);
|
|
51
|
-
if (matchWithoutLib) {
|
|
52
|
-
const [, provider, resource] = matchWithoutLib;
|
|
53
|
-
return `import imports.${provider}.${resource}.*;`;
|
|
54
|
-
}
|
|
55
|
-
// Replace using lines
|
|
56
|
-
const importModules = /import gen\.modules\.(.+)\.\*;/;
|
|
57
|
-
const importModulesMatch = line.match(importModules);
|
|
58
|
-
if (importModulesMatch) {
|
|
59
|
-
const [, module] = importModulesMatch;
|
|
60
|
-
return `import imports.${module}.*;`;
|
|
61
|
-
}
|
|
62
|
-
return line;
|
|
63
|
-
})
|
|
64
|
-
.join("\n");
|
|
65
|
-
}
|
|
66
|
-
exports.replaceJavaImports = replaceJavaImports;
|
|
67
|
-
function replaceCsharpImports(code) {
|
|
68
|
-
return code
|
|
69
|
-
.split("\n")
|
|
70
|
-
.map((line) => {
|
|
71
|
-
// Replace using lines with lib
|
|
72
|
-
const fromImportLibRegex = /using Gen\.Providers\.([^.]*)(?:\.Lib)?\.(.*);/;
|
|
73
|
-
const match = line.match(fromImportLibRegex);
|
|
74
|
-
if (match) {
|
|
75
|
-
const [, provider, resource] = match;
|
|
76
|
-
return `using ${lowercaseFirstChar(provider)}.${resource};`;
|
|
77
|
-
}
|
|
78
|
-
// Replace using lines
|
|
79
|
-
if (line.startsWith("using Gen.Providers.")) {
|
|
80
|
-
const importLine = line.replace("using Gen.Providers.", "");
|
|
81
|
-
return `using ${importLine
|
|
82
|
-
.substring(0, 1)
|
|
83
|
-
.toLocaleLowerCase()}${importLine.substring(1)}`;
|
|
84
|
-
}
|
|
85
|
-
if (line.startsWith("using Gen.Modules.")) {
|
|
86
|
-
const importLine = line.replace("using Gen.Modules.", "");
|
|
87
|
-
return `using ${importLine}`;
|
|
88
|
-
}
|
|
89
|
-
return line;
|
|
90
|
-
})
|
|
91
|
-
.join("\n");
|
|
92
|
-
}
|
|
93
|
-
exports.replaceCsharpImports = replaceCsharpImports;
|
|
94
|
-
function replaceGoImports(code) {
|
|
95
|
-
return code
|
|
96
|
-
.split("\n")
|
|
97
|
-
.map((line) => {
|
|
98
|
-
// Replace using lines with lib
|
|
99
|
-
const fromImportLibRegex = /import \"github.com\/aws-samples\/dummy\/gen\/providers\/([^\/]*)(?:\/lib)?\/(.*)\"/;
|
|
100
|
-
const matchLib = line.match(fromImportLibRegex);
|
|
101
|
-
if (matchLib) {
|
|
102
|
-
const [, provider, resource] = matchLib;
|
|
103
|
-
return `import "cdk.tf/go/stack/generated/${provider}/${resource}"`;
|
|
104
|
-
}
|
|
105
|
-
// Replace using lines
|
|
106
|
-
const fromImportRegex = /import \"github.com\/aws-samples\/dummy\/gen\/providers\/([^\/]+)\/(.*)\"/;
|
|
107
|
-
const match = line.match(fromImportRegex);
|
|
108
|
-
if (match) {
|
|
109
|
-
const [, provider, resource] = match;
|
|
110
|
-
return `import "cdk.tf/go/stack/generated/${provider}/${resource}"`;
|
|
111
|
-
}
|
|
112
|
-
const importModulesRegex = /import (.*) \"github.com\/aws-samples\/dummy\/gen\/modules\/(.*)\"/;
|
|
113
|
-
const matchModules = line.match(importModulesRegex);
|
|
114
|
-
if (matchModules) {
|
|
115
|
-
const [, name, module] = matchModules;
|
|
116
|
-
return `import ${name} "cdk.tf/go/stack/generated/${module}"`;
|
|
117
|
-
}
|
|
118
|
-
return line;
|
|
119
|
-
})
|
|
120
|
-
.join("\n");
|
|
121
|
-
}
|
|
122
|
-
exports.replaceGoImports = replaceGoImports;
|
|
123
|
-
function lowercaseFirstChar(str) {
|
|
124
|
-
return str.substring(0, 1).toLocaleLowerCase() + str.substring(1);
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNpaS1yb3NldHRhLXdvcmthcm91bmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsianNpaS1yb3NldHRhLXdvcmthcm91bmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DOzs7QUFFbkMsU0FBZ0Isb0JBQW9CLENBQUMsSUFBWTtJQUMvQyxPQUFPLElBQUk7U0FDUixLQUFLLENBQUMsSUFBSSxDQUFDO1NBQ1gsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDWixxQ0FBcUM7UUFDckMsTUFBTSxrQkFBa0IsR0FDdEIsMkRBQTJELENBQUM7UUFDOUQsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBRUQsZ0NBQWdDO1FBQ2hDLE1BQU0sY0FBYyxHQUNsQiw4REFBOEQsQ0FBQztRQUNqRSxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLDRCQUE0QixDQUFDLENBQUM7UUFDcEUsQ0FBQztRQUVELDRCQUE0QjtRQUM1QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDO1lBQzlDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsdUJBQXVCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLDBCQUEwQixFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDckUsQ0FBQztRQUVELGtCQUFrQjtRQUNsQixJQUFJLElBQUks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Q0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUM7WUFDdEMsT0FBTyxVQUFVLElBQUksK0JBQStCLE1BQU0sR0FBRyxDQUFDO1FBQ2hFLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztTQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixDQUFDO0FBakNELDRDQWlDQztBQUVELFNBQVMsa0JBQWtCLENBQUMsR0FBVztJQUNyQyxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VQeXRob25JbXBvcnRzKGNvZGU6IHN0cmluZykge1xuICByZXR1cm4gY29kZVxuICAgIC5zcGxpdChcIlxcblwiKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIC8vIFJlcGxhY2UgZnJvbS1pbXBvcnQgbGluZXMgd2l0aCBsaWJcbiAgICAgIGNvbnN0IGZyb21JbXBvcnRMaWJSZWdleCA9XG4gICAgICAgIC9mcm9tIFxcLlxcLlxcLmdlblxcLnByb3ZpZGVyc1xcLihbXi5dKykoPzpcXC5saWIpP1xcLiguKikgaW1wb3J0LztcbiAgICAgIGlmIChmcm9tSW1wb3J0TGliUmVnZXgudGVzdChsaW5lKSkge1xuICAgICAgICByZXR1cm4gbGluZS5yZXBsYWNlKGZyb21JbXBvcnRMaWJSZWdleCwgXCJmcm9tIGltcG9ydHMuJDEuJDIgaW1wb3J0XCIpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXBsYWNlIGltcG9ydCBsaW5lcyB3aXRoIGxpYlxuICAgICAgY29uc3QgaW1wb3J0TGliUmVnZXggPVxuICAgICAgICAvaW1wb3J0IFxcLlxcLlxcLmdlblxcLnByb3ZpZGVyc1xcLihbXi5dKykoPzpcXC5saWIpP1xcLiguKikgYXMgKC4qKS87XG4gICAgICBpZiAoaW1wb3J0TGliUmVnZXgudGVzdChsaW5lKSkge1xuICAgICAgICByZXR1cm4gbGluZS5yZXBsYWNlKGltcG9ydExpYlJlZ2V4LCBcImltcG9ydCBpbXBvcnRzLiQxLiQyIGFzICQzXCIpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXBsYWNlIGZyb20taW1wb3J0IGxpbmVzXG4gICAgICBpZiAobGluZS5zdGFydHNXaXRoKFwiZnJvbSAuLi5nZW4ucHJvdmlkZXJzLlwiKSkge1xuICAgICAgICByZXR1cm4gbGluZS5yZXBsYWNlKFwiZnJvbSAuLi5nZW4ucHJvdmlkZXJzLlwiLCBcImZyb20gaW1wb3J0cy5cIik7XG4gICAgICB9XG4gICAgICAvLyBSZXBsYWNlIGltcG9ydCBsaW5lc1xuICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcImltcG9ydCAuLi5nZW4ucHJvdmlkZXJzLlwiKSkge1xuICAgICAgICByZXR1cm4gbGluZS5yZXBsYWNlKFwiaW1wb3J0IC4uLmdlbi5wcm92aWRlcnMuXCIsIFwiaW1wb3J0IGltcG9ydHMuXCIpO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXBsYWNlIG1vZHVsZXNcbiAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCJpbXBvcnQgLi4uZ2VuLm1vZHVsZXMuXCIpKSB7XG4gICAgICAgIHJldHVybiBsaW5lLnJlcGxhY2UoXCJpbXBvcnQgLi4uZ2VuLm1vZHVsZXMuXCIsIFwiaW1wb3J0IGltcG9ydHMuXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGluZTtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUphdmFJbXBvcnRzKGNvZGU6IHN0cmluZykge1xuICByZXR1cm4gY29kZVxuICAgIC5zcGxpdChcIlxcblwiKVxuICAgIC5tYXAoKGxpbmUpID0+IHtcbiAgICAgIC8vIFJlcGxhY2UgdXNpbmcgbGluZXMgd2l0aCBsaWIgYW5kIHByZWNpY2VzIGltcG9ydFxuICAgICAgY29uc3QgaW1wb3J0V2l0aExpYiA9XG4gICAgICAgIC9pbXBvcnQgZ2VuXFwucHJvdmlkZXJzXFwuKFteLl0rKSg/OlxcLmxpYik/XFwuKFteLl0rKVxcLiguKik7LztcbiAgICAgIGNvbnN0IG1hdGNoV2l0aExpYiA9IGxpbmUubWF0Y2goaW1wb3J0V2l0aExpYik7XG4gICAgICBpZiAobWF0Y2hXaXRoTGliKSB7XG4gICAgICAgIGNvbnN0IFssIHByb3ZpZGVyLCByZXNvdXJjZSwgY2xhc3NOYW1lXSA9IG1hdGNoV2l0aExpYjtcbiAgICAgICAgcmV0dXJuIGBpbXBvcnQgaW1wb3J0cy4ke3Byb3ZpZGVyfS4ke3Jlc291cmNlfS4ke2NsYXNzTmFtZX07YDtcbiAgICAgIH1cblxuICAgICAgLy8gUmVwbGFjZSB1c2luZyBsaW5lc1xuICAgICAgY29uc3QgaW1wb3J0V2l0aG91dExpYiA9IC9pbXBvcnQgZ2VuXFwucHJvdmlkZXJzXFwuKFteLl0rKVxcLihbXi5dKylcXC5cXCo7LztcbiAgICAgIGNvbnN0IG1hdGNoV2l0aG91dExpYiA9IGxpbmUubWF0Y2goaW1wb3J0V2l0aG91dExpYik7XG4gICAgICBpZiAobWF0Y2hXaXRob3V0TGliKSB7XG4gICAgICAgIGNvbnN0IFssIHByb3ZpZGVyLCByZXNvdXJjZV0gPSBtYXRjaFdpdGhvdXRMaWI7XG4gICAgICAgIHJldHVybiBgaW1wb3J0IGltcG9ydHMuJHtwcm92aWRlcn0uJHtyZXNvdXJjZX0uKjtgO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXBsYWNlIHVzaW5nIGxpbmVzXG4gICAgICBjb25zdCBpbXBvcnRNb2R1bGVzID0gL2ltcG9ydCBnZW5cXC5tb2R1bGVzXFwuKC4rKVxcLlxcKjsvO1xuICAgICAgY29uc3QgaW1wb3J0TW9kdWxlc01hdGNoID0gbGluZS5tYXRjaChpbXBvcnRNb2R1bGVzKTtcbiAgICAgIGlmIChpbXBvcnRNb2R1bGVzTWF0Y2gpIHtcbiAgICAgICAgY29uc3QgWywgbW9kdWxlXSA9IGltcG9ydE1vZHVsZXNNYXRjaDtcbiAgICAgICAgcmV0dXJuIGBpbXBvcnQgaW1wb3J0cy4ke21vZHVsZX0uKjtgO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGluZTtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZUNzaGFycEltcG9ydHMoY29kZTogc3RyaW5nKSB7XG4gIHJldHVybiBjb2RlXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgLy8gUmVwbGFjZSB1c2luZyBsaW5lcyB3aXRoIGxpYlxuICAgICAgY29uc3QgZnJvbUltcG9ydExpYlJlZ2V4ID1cbiAgICAgICAgL3VzaW5nIEdlblxcLlByb3ZpZGVyc1xcLihbXi5dKikoPzpcXC5MaWIpP1xcLiguKik7LztcbiAgICAgIGNvbnN0IG1hdGNoID0gbGluZS5tYXRjaChmcm9tSW1wb3J0TGliUmVnZXgpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IFssIHByb3ZpZGVyLCByZXNvdXJjZV0gPSBtYXRjaDtcbiAgICAgICAgcmV0dXJuIGB1c2luZyAke2xvd2VyY2FzZUZpcnN0Q2hhcihwcm92aWRlcil9LiR7cmVzb3VyY2V9O2A7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlcGxhY2UgdXNpbmcgbGluZXNcbiAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCJ1c2luZyBHZW4uUHJvdmlkZXJzLlwiKSkge1xuICAgICAgICBjb25zdCBpbXBvcnRMaW5lID0gbGluZS5yZXBsYWNlKFwidXNpbmcgR2VuLlByb3ZpZGVycy5cIiwgXCJcIik7XG5cbiAgICAgICAgcmV0dXJuIGB1c2luZyAke2ltcG9ydExpbmVcbiAgICAgICAgICAuc3Vic3RyaW5nKDAsIDEpXG4gICAgICAgICAgLnRvTG9jYWxlTG93ZXJDYXNlKCl9JHtpbXBvcnRMaW5lLnN1YnN0cmluZygxKX1gO1xuICAgICAgfVxuXG4gICAgICBpZiAobGluZS5zdGFydHNXaXRoKFwidXNpbmcgR2VuLk1vZHVsZXMuXCIpKSB7XG4gICAgICAgIGNvbnN0IGltcG9ydExpbmUgPSBsaW5lLnJlcGxhY2UoXCJ1c2luZyBHZW4uTW9kdWxlcy5cIiwgXCJcIik7XG5cbiAgICAgICAgcmV0dXJuIGB1c2luZyAke2ltcG9ydExpbmV9YDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxpbmU7XG4gICAgfSlcbiAgICAuam9pbihcIlxcblwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VHb0ltcG9ydHMoY29kZTogc3RyaW5nKSB7XG4gIHJldHVybiBjb2RlXG4gICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgLm1hcCgobGluZSkgPT4ge1xuICAgICAgLy8gUmVwbGFjZSB1c2luZyBsaW5lcyB3aXRoIGxpYlxuICAgICAgY29uc3QgZnJvbUltcG9ydExpYlJlZ2V4ID1cbiAgICAgICAgL2ltcG9ydCBcXFwiZ2l0aHViLmNvbVxcL2F3cy1zYW1wbGVzXFwvZHVtbXlcXC9nZW5cXC9wcm92aWRlcnNcXC8oW15cXC9dKikoPzpcXC9saWIpP1xcLyguKilcXFwiLztcbiAgICAgIGNvbnN0IG1hdGNoTGliID0gbGluZS5tYXRjaChmcm9tSW1wb3J0TGliUmVnZXgpO1xuICAgICAgaWYgKG1hdGNoTGliKSB7XG4gICAgICAgIGNvbnN0IFssIHByb3ZpZGVyLCByZXNvdXJjZV0gPSBtYXRjaExpYjtcbiAgICAgICAgcmV0dXJuIGBpbXBvcnQgXCJjZGsudGYvZ28vc3RhY2svZ2VuZXJhdGVkLyR7cHJvdmlkZXJ9LyR7cmVzb3VyY2V9XCJgO1xuICAgICAgfVxuXG4gICAgICAvLyBSZXBsYWNlIHVzaW5nIGxpbmVzXG4gICAgICBjb25zdCBmcm9tSW1wb3J0UmVnZXggPVxuICAgICAgICAvaW1wb3J0IFxcXCJnaXRodWIuY29tXFwvYXdzLXNhbXBsZXNcXC9kdW1teVxcL2dlblxcL3Byb3ZpZGVyc1xcLyhbXlxcL10rKVxcLyguKilcXFwiLztcbiAgICAgIGNvbnN0IG1hdGNoID0gbGluZS5tYXRjaChmcm9tSW1wb3J0UmVnZXgpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGNvbnN0IFssIHByb3ZpZGVyLCByZXNvdXJjZV0gPSBtYXRjaDtcbiAgICAgICAgcmV0dXJuIGBpbXBvcnQgXCJjZGsudGYvZ28vc3RhY2svZ2VuZXJhdGVkLyR7cHJvdmlkZXJ9LyR7cmVzb3VyY2V9XCJgO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbXBvcnRNb2R1bGVzUmVnZXggPVxuICAgICAgICAvaW1wb3J0ICguKikgXFxcImdpdGh1Yi5jb21cXC9hd3Mtc2FtcGxlc1xcL2R1bW15XFwvZ2VuXFwvbW9kdWxlc1xcLyguKilcXFwiLztcbiAgICAgIGNvbnN0IG1hdGNoTW9kdWxlcyA9IGxpbmUubWF0Y2goaW1wb3J0TW9kdWxlc1JlZ2V4KTtcbiAgICAgIGlmIChtYXRjaE1vZHVsZXMpIHtcbiAgICAgICAgY29uc3QgWywgbmFtZSwgbW9kdWxlXSA9IG1hdGNoTW9kdWxlcztcbiAgICAgICAgcmV0dXJuIGBpbXBvcnQgJHtuYW1lfSBcImNkay50Zi9nby9zdGFjay9nZW5lcmF0ZWQvJHttb2R1bGV9XCJgO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGluZTtcbiAgICB9KVxuICAgIC5qb2luKFwiXFxuXCIpO1xufVxuXG5mdW5jdGlvbiBsb3dlcmNhc2VGaXJzdENoYXIoc3RyOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0ci5zdWJzdHJpbmcoMCwgMSkudG9Mb2NhbGVMb3dlckNhc2UoKSArIHN0ci5zdWJzdHJpbmcoMSk7XG59XG4iXX0=
|
package/lib/partialCode.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) HashiCorp, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MPL-2.0
|
|
5
|
-
*/
|
|
6
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
-
if (k2 === undefined) k2 = k;
|
|
8
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
-
}
|
|
12
|
-
Object.defineProperty(o, k2, desc);
|
|
13
|
-
}) : (function(o, m, k, k2) {
|
|
14
|
-
if (k2 === undefined) k2 = k;
|
|
15
|
-
o[k2] = m[k];
|
|
16
|
-
}));
|
|
17
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
-
}) : function(o, v) {
|
|
20
|
-
o["default"] = v;
|
|
21
|
-
});
|
|
22
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
-
if (mod && mod.__esModule) return mod;
|
|
24
|
-
var result = {};
|
|
25
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
-
__setModuleDefault(result, mod);
|
|
27
|
-
return result;
|
|
28
|
-
};
|
|
29
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.getRequiredAttributes = exports.fillWithConfigAccessors = void 0;
|
|
31
|
-
const terraformSchema_1 = require("./terraformSchema");
|
|
32
|
-
const t = __importStar(require("@babel/types"));
|
|
33
|
-
const utils_1 = require("./utils");
|
|
34
|
-
function getConfigFieldName(topLevelConfig, name) {
|
|
35
|
-
const sanitizedName = (0, utils_1.camelCase)(name);
|
|
36
|
-
return deduplicateName(Object.keys(topLevelConfig), sanitizedName);
|
|
37
|
-
}
|
|
38
|
-
function deduplicateName(existingNames, name) {
|
|
39
|
-
let newName = name;
|
|
40
|
-
let i = 1;
|
|
41
|
-
while (existingNames.includes(newName)) {
|
|
42
|
-
newName = `${name}${i}`;
|
|
43
|
-
i++;
|
|
44
|
-
}
|
|
45
|
-
return newName;
|
|
46
|
-
}
|
|
47
|
-
function fillWithConfigAccessors(scope, config, path) {
|
|
48
|
-
if (Array.isArray(config)) {
|
|
49
|
-
return config.map((c) => fillWithConfigAccessors(scope, c, `${path}.[]`));
|
|
50
|
-
}
|
|
51
|
-
if (typeof config === "object" && config !== null) {
|
|
52
|
-
const mutated = Object.entries(config).reduce((acc, [key, value]) => ({
|
|
53
|
-
...acc,
|
|
54
|
-
[key]: fillWithConfigAccessors(scope, value, `${path}.${key}`),
|
|
55
|
-
}), {});
|
|
56
|
-
// Get type of this part of the config
|
|
57
|
-
const attributeType = (0, terraformSchema_1.getTypeAtPath)(scope.providerSchema, path);
|
|
58
|
-
const requiredAttributes = getRequiredAttributes(attributeType);
|
|
59
|
-
// Add accessors for all required attributes that are missing
|
|
60
|
-
requiredAttributes.forEach((key) => {
|
|
61
|
-
const value = mutated[key];
|
|
62
|
-
const isNotDirectlyAccessible = value === undefined;
|
|
63
|
-
const isReplacedByAst = (t.isNode(mutated) && t.isExpression(mutated)) ||
|
|
64
|
-
t.isExpression(value);
|
|
65
|
-
const isEmptyArray = Array.isArray(value) && value.length === 0;
|
|
66
|
-
// If this was already replaced by an AST node, we don't need to do anything
|
|
67
|
-
// We assume all fields are filled in by the AST
|
|
68
|
-
if (isReplacedByAst) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
if (isNotDirectlyAccessible || isEmptyArray) {
|
|
72
|
-
const fieldName = getConfigFieldName(scope.topLevelConfig, key);
|
|
73
|
-
mutated[key] = t.memberExpression(t.identifier("config"), t.identifier(fieldName));
|
|
74
|
-
scope.topLevelConfig[fieldName] = `${path}.${key}`;
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
return mutated;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
return config;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
exports.fillWithConfigAccessors = fillWithConfigAccessors;
|
|
84
|
-
function getRequiredAttributes(attributeType) {
|
|
85
|
-
if (!attributeType) {
|
|
86
|
-
return [];
|
|
87
|
-
}
|
|
88
|
-
if (typeof attributeType !== "object" ||
|
|
89
|
-
Array.isArray(attributeType) ||
|
|
90
|
-
attributeType === null ||
|
|
91
|
-
attributeType === undefined ||
|
|
92
|
-
!("block" in attributeType)) {
|
|
93
|
-
return [];
|
|
94
|
-
}
|
|
95
|
-
const requiredAttributes = Object.entries(attributeType.block.attributes || {}).reduce((acc, [key, value]) => (value.required ? [...acc, key] : acc), []);
|
|
96
|
-
// Logic taken from (and should be shared with) provider generator resource parser: attributeForBlockType
|
|
97
|
-
const requiredBlockTypes = Object.entries(attributeType.block.block_types || {}).reduce((acc, [key, value]) => {
|
|
98
|
-
if (value.nesting_mode === "single" &&
|
|
99
|
-
!Object.values(value.block.attributes || {}).some((x) => !x.required)) {
|
|
100
|
-
return [...acc, key];
|
|
101
|
-
}
|
|
102
|
-
if (value.nesting_mode === "map") {
|
|
103
|
-
return acc;
|
|
104
|
-
}
|
|
105
|
-
if ((value.nesting_mode === "list" || value.nesting_mode === "set") &&
|
|
106
|
-
value.min_items === undefined
|
|
107
|
-
? false
|
|
108
|
-
: value.min_items > 0) {
|
|
109
|
-
return [...acc, key];
|
|
110
|
-
}
|
|
111
|
-
return acc;
|
|
112
|
-
}, []);
|
|
113
|
-
return [...requiredAttributes, ...requiredBlockTypes].sort();
|
|
114
|
-
}
|
|
115
|
-
exports.getRequiredAttributes = getRequiredAttributes;
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFydGlhbENvZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwYXJ0aWFsQ29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHVEQUFrRDtBQUVsRCxnREFBa0M7QUFDbEMsbUNBQW9DO0FBRXBDLFNBQVMsa0JBQWtCLENBQ3pCLGNBQXVDLEVBQ3ZDLElBQVk7SUFFWixNQUFNLGFBQWEsR0FBRyxJQUFBLGlCQUFTLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsT0FBTyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsYUFBdUIsRUFBRSxJQUFZO0lBQzVELElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztJQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixPQUFPLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN2QyxPQUFPLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxFQUFFLENBQUM7SUFDTixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUNyQyxLQUFvQixFQUNwQixNQUE4QixFQUM5QixJQUFZO0lBRVosSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLENB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Ii8qKlxuICogQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluYy5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4gKi9cblxuaW1wb3J0IHsgZ2V0VHlwZUF0UGF0aCB9IGZyb20gXCIuL3RlcnJhZm9ybVNjaGVtYVwiO1xuaW1wb3J0IHsgUmVzb3VyY2VTY29wZSwgVGVycmFmb3JtUmVzb3VyY2VCbG9jayB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgKiBhcyB0IGZyb20gXCJAYmFiZWwvdHlwZXNcIjtcbmltcG9ydCB7IGNhbWVsQ2FzZSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmZ1bmN0aW9uIGdldENvbmZpZ0ZpZWxkTmFtZShcbiAgdG9wTGV2ZWxDb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBuYW1lOiBzdHJpbmcsXG4pIHtcbiAgY29uc3Qgc2FuaXRpemVkTmFtZSA9IGNhbWVsQ2FzZShuYW1lKTtcbiAgcmV0dXJuIGRlZHVwbGljYXRlTmFtZShPYmplY3Qua2V5cyh0b3BMZXZlbENvbmZpZyksIHNhbml0aXplZE5hbWUpO1xufVxuXG5mdW5jdGlvbiBkZWR1cGxpY2F0ZU5hbWUoZXhpc3RpbmdOYW1lczogc3RyaW5nW10sIG5hbWU6IHN0cmluZykge1xuICBsZXQgbmV3TmFtZSA9IG5hbWU7XG4gIGxldCBpID0gMTtcbiAgd2hpbGUgKGV4aXN0aW5nTmFtZXMuaW5jbHVkZXMobmV3TmFtZSkpIHtcbiAgICBuZXdOYW1lID0gYCR7bmFtZX0ke2l9YDtcbiAgICBpKys7XG4gIH1cbiAgcmV0dXJuIG5ld05hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxsV2l0aENvbmZpZ0FjY2Vzc29ycyhcbiAgc2NvcGU6IFJlc291cmNlU2NvcGUsXG4gIGNvbmZpZzogVGVycmFmb3JtUmVzb3VyY2VCbG9jayxcbiAgcGF0aDogc3RyaW5nLFxuKTogYW55IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlnKSkge1xuICAgIHJldHVybiBjb25maWcubWFwKChjKSA9PiBmaWxsV2l0aENvbmZpZ0FjY2Vzc29ycyhzY29wZSwgYywgYCR7cGF0aH0uW11gKSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gXCJvYmplY3RcIiAmJiBjb25maWcgIT09IG51bGwpIHtcbiAgICBjb25zdCBtdXRhdGVkID0gT2JqZWN0LmVudHJpZXMoY29uZmlnKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgIC4uLmFjYyxcbiAgICAgICAgW2tleV06IGZpbGxXaXRoQ29uZmlnQWNjZXNzb3JzKHNjb3BlLCB2YWx1ZSwgYCR7cGF0aH0uJHtrZXl9YCksXG4gICAgICB9KSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIFRlcnJhZm9ybVJlc291cmNlQmxvY2s+LFxuICAgICk7XG5cbiAgICAvLyBHZXQgdHlwZSBvZiB0aGlzIHBhcnQgb2YgdGhlIGNvbmZpZ1xuICAgIGNvbnN0IGF0dHJpYnV0ZVR5cGUgPSBnZXRUeXBlQXRQYXRoKHNjb3BlLnByb3ZpZGVyU2NoZW1hLCBwYXRoKTtcbiAgICBjb25zdCByZXF1aXJlZEF0dHJpYnV0ZXMgPSBnZXRSZXF1aXJlZEF0dHJpYnV0ZXMoYXR0cmlidXRlVHlwZSk7XG5cbiAgICAvLyBBZGQgYWNjZXNzb3JzIGZvciBhbGwgcmVxdWlyZWQgYXR0cmlidXRlcyB0aGF0IGFyZSBtaXNzaW5nXG4gICAgcmVxdWlyZWRBdHRyaWJ1dGVzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBtdXRhdGVkW2tleV07XG4gICAgICBjb25zdCBpc05vdERpcmVjdGx5QWNjZXNzaWJsZSA9IHZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBpc1JlcGxhY2VkQnlBc3QgPVxuICAgICAgICAodC5pc05vZGUobXV0YXRlZCkgJiYgdC5pc0V4cHJlc3Npb24obXV0YXRlZCkpIHx8XG4gICAgICAgIHQuaXNFeHByZXNzaW9uKHZhbHVlIGFzIGFueSk7XG4gICAgICBjb25zdCBpc0VtcHR5QXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDA7XG5cbiAgICAgIC8vIElmIHRoaXMgd2FzIGFscmVhZHkgcmVwbGFjZWQgYnkgYW4gQVNUIG5vZGUsIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmdcbiAgICAgIC8vIFdlIGFzc3VtZSBhbGwgZmllbGRzIGFyZSBmaWxsZWQgaW4gYnkgdGhlIEFTVFxuICAgICAgaWYgKGlzUmVwbGFjZWRCeUFzdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChpc05vdERpcmVjdGx5QWNjZXNzaWJsZSB8fCBpc0VtcHR5QXJyYXkpIHtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gZ2V0Q29uZmlnRmllbGROYW1lKHNjb3BlLnRvcExldmVsQ29uZmlnLCBrZXkpO1xuICAgICAgICBtdXRhdGVkW2tleV0gPSB0Lm1lbWJlckV4cHJlc3Npb24oXG4gICAgICAgICAgdC5pZGVudGlmaWVyKFwiY29uZmlnXCIpLFxuICAgICAgICAgIHQuaWRlbnRpZmllcihmaWVsZE5hbWUpLFxuICAgICAgICApO1xuICAgICAgICBzY29wZS50b3BMZXZlbENvbmZpZ1tmaWVsZE5hbWVdID0gYCR7cGF0aH0uJHtrZXl9YDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBtdXRhdGVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cbn1cblxudHlwZSBLZXkgPSBzdHJpbmc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWlyZWRBdHRyaWJ1dGVzKFxuICBhdHRyaWJ1dGVUeXBlOiBSZXR1cm5UeXBlPHR5cGVvZiBnZXRUeXBlQXRQYXRoPixcbik6IEtleVtdIHtcbiAgaWYgKCFhdHRyaWJ1dGVUeXBlKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmIChcbiAgICB0eXBlb2YgYXR0cmlidXRlVHlwZSAhPT0gXCJvYmplY3RcIiB8fFxuICAgIEFycmF5LmlzQXJyYXkoYXR0cmlidXRlVHlwZSkgfHxcbiAgICBhdHRyaWJ1dGVUeXBlID09PSBudWxsIHx8XG4gICAgYXR0cmlidXRlVHlwZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgIShcImJsb2NrXCIgaW4gYXR0cmlidXRlVHlwZSlcbiAgKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgcmVxdWlyZWRBdHRyaWJ1dGVzID0gT2JqZWN0LmVudHJpZXMoXG4gICAgYXR0cmlidXRlVHlwZS5ibG9jay5hdHRyaWJ1dGVzIHx8IHt9LFxuICApLnJlZHVjZShcbiAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh2YWx1ZS5yZXF1aXJlZCA/IFsuLi5hY2MsIGtleV0gOiBhY2MpLFxuICAgIFtdIGFzIHN0cmluZ1tdLFxuICApO1xuXG4gIC8vIExvZ2ljIHRha2VuIGZyb20gKGFuZCBzaG91bGQgYmUgc2hhcmVkIHdpdGgpIHByb3ZpZGVyIGdlbmVyYXRvciByZXNvdXJjZSBwYXJzZXI6IGF0dHJpYnV0ZUZvckJsb2NrVHlwZVxuICBjb25zdCByZXF1aXJlZEJsb2NrVHlwZXMgPSBPYmplY3QuZW50cmllcyhcbiAgICBhdHRyaWJ1dGVUeXBlLmJsb2NrLmJsb2NrX3R5cGVzIHx8IHt9LFxuICApLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBpZiAoXG4gICAgICB2YWx1ZS5uZXN0aW5nX21vZGUgPT09IFwic2luZ2xlXCIgJiZcbiAgICAgICFPYmplY3QudmFsdWVzKHZhbHVlLmJsb2NrLmF0dHJpYnV0ZXMgfHwge30pLnNvbWUoKHgpID0+ICF4LnJlcXVpcmVkKVxuICAgICkge1xuICAgICAgcmV0dXJuIFsuLi5hY2MsIGtleV07XG4gICAgfVxuICAgIGlmICh2YWx1ZS5uZXN0aW5nX21vZGUgPT09IFwibWFwXCIpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgKHZhbHVlLm5lc3RpbmdfbW9kZSA9PT0gXCJsaXN0XCIgfHwgdmFsdWUubmVzdGluZ19tb2RlID09PSBcInNldFwiKSAmJlxuICAgICAgdmFsdWUubWluX2l0ZW1zID09PSB1bmRlZmluZWRcbiAgICAgICAgPyBmYWxzZVxuICAgICAgICA6ICh2YWx1ZSBhcyBhbnkpLm1pbl9pdGVtcyA+IDBcbiAgICApIHtcbiAgICAgIHJldHVybiBbLi4uYWNjLCBrZXldO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH0sIFtdIGFzIHN0cmluZ1tdKTtcbiAgcmV0dXJuIFsuLi5yZXF1aXJlZEF0dHJpYnV0ZXMsIC4uLnJlcXVpcmVkQmxvY2tUeXBlc10uc29ydCgpO1xufVxuIl19
|
package/lib/provider.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getProviderRequirements = exports.getFullProviderName = void 0;
|
|
4
|
-
function getFullProviderName(schema, providerName) {
|
|
5
|
-
return Object.keys(schema.provider_schemas || {}).find((name) => name.endsWith(providerName));
|
|
6
|
-
}
|
|
7
|
-
exports.getFullProviderName = getFullProviderName;
|
|
8
|
-
function getProviderRequirements(plan) {
|
|
9
|
-
var _a;
|
|
10
|
-
// In Terraform one can implicitly define the provider by using resources of that type
|
|
11
|
-
const explicitProviders = Object.keys(plan.provider || {});
|
|
12
|
-
const implicitProviders = Object.keys({ ...plan.resource, ...plan.data })
|
|
13
|
-
.filter((type) => type !== "terraform_remote_state")
|
|
14
|
-
.filter((type) => type !== "terraform_data")
|
|
15
|
-
.map((type) => type.split("_")[0]);
|
|
16
|
-
const providerRequirements = Array.from(new Set([...explicitProviders, ...implicitProviders])).reduce((carry, req) => ({ ...carry, [req]: "*" }), {});
|
|
17
|
-
(_a = plan.terraform) === null || _a === void 0 ? void 0 : _a.forEach(({ required_providers }) => (required_providers || []).forEach((providerBlock) => Object.entries(providerBlock).forEach(([key, value]) => {
|
|
18
|
-
let name, version;
|
|
19
|
-
if (typeof value === "string") {
|
|
20
|
-
name = key;
|
|
21
|
-
version = value;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
name = value.source;
|
|
25
|
-
version = value.version;
|
|
26
|
-
}
|
|
27
|
-
if (!name) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
// implicitly only the last part of the path is used (e.g. docker for kreuzwerker/docker)
|
|
31
|
-
const parts = name.split("/");
|
|
32
|
-
if (parts.length > 1) {
|
|
33
|
-
delete providerRequirements[parts.pop() || ""];
|
|
34
|
-
}
|
|
35
|
-
providerRequirements[name] = version || "*";
|
|
36
|
-
})));
|
|
37
|
-
return providerRequirements;
|
|
38
|
-
}
|
|
39
|
-
exports.getProviderRequirements = getProviderRequirements;
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFRQSxTQUFnQixtQkFBbUIsQ0FDakMsTUFBc0IsRUFDdEIsWUFBb0I7SUFFcEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUM5RCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUM1QixDQUFDO0FBQ0osQ0FBQztBQVBELGtEQU9DO0FBR0QsU0FBZ0IsdUJBQXVCLENBQUMsSUFBVTs7SUFDaEQsc0ZBQXNGO0lBQ3RGLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzNELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN0RSxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyx3QkFBd0IsQ0FBQztTQUNuRCxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQztTQUMzQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVyQyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQ3JDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsRUFBRSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FDdEQsQ0FBQyxNQUFNLENBQ04sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUMxQyxFQUE0QixDQUM3QixDQUFDO0lBRUYsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxPQUFPLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxDQUNqRCxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQ25ELE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtRQUNyRCxJQUFJLElBQUksRUFBRSxPQUFPLENBQUM7UUFDbEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixJQUFJLEdBQUcsR0FBRyxDQUFDO1lBQ1gsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3BCLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzFCLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPO1FBQ1QsQ0FBQztRQUNELHlGQUF5RjtRQUN6RixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0Qsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxJQUFJLEdBQUcsQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FDSCxDQUNGLENBQUM7SUFFRixPQUFPLG9CQUFvQixDQUFDO0FBQzlCLENBQUM7QUF6Q0QsMERBeUNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCAqIGFzIHogZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgUHJvdmlkZXJTY2hlbWEsIEJsb2NrVHlwZSwgQXR0cmlidXRlIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgeyBzY2hlbWEgfSBmcm9tIFwiLi9zY2hlbWFcIjtcblxuZXhwb3J0IHsgQmxvY2tUeXBlLCBBdHRyaWJ1dGUgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZ1bGxQcm92aWRlck5hbWUoXG4gIHNjaGVtYTogUHJvdmlkZXJTY2hlbWEsXG4gIHByb3ZpZGVyTmFtZTogc3RyaW5nLFxuKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhzY2hlbWEucHJvdmlkZXJfc2NoZW1hcyB8fCB7fSkuZmluZCgobmFtZSkgPT5cbiAgICBuYW1lLmVuZHNXaXRoKHByb3ZpZGVyTmFtZSksXG4gICk7XG59XG5cbnR5cGUgUGxhbiA9IHouaW5mZXI8dHlwZW9mIHNjaGVtYT47XG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvdmlkZXJSZXF1aXJlbWVudHMocGxhbjogUGxhbikge1xuICAvLyBJbiBUZXJyYWZvcm0gb25lIGNhbiBpbXBsaWNpdGx5IGRlZmluZSB0aGUgcHJvdmlkZXIgYnkgdXNpbmcgcmVzb3VyY2VzIG9mIHRoYXQgdHlwZVxuICBjb25zdCBleHBsaWNpdFByb3ZpZGVycyA9IE9iamVjdC5rZXlzKHBsYW4ucHJvdmlkZXIgfHwge30pO1xuICBjb25zdCBpbXBsaWNpdFByb3ZpZGVycyA9IE9iamVjdC5rZXlzKHsgLi4ucGxhbi5yZXNvdXJjZSwgLi4ucGxhbi5kYXRhIH0pXG4gICAgLmZpbHRlcigodHlwZSkgPT4gdHlwZSAhPT0gXCJ0ZXJyYWZvcm1fcmVtb3RlX3N0YXRlXCIpXG4gICAgLmZpbHRlcigodHlwZSkgPT4gdHlwZSAhPT0gXCJ0ZXJyYWZvcm1fZGF0YVwiKVxuICAgIC5tYXAoKHR5cGUpID0+IHR5cGUuc3BsaXQoXCJfXCIpWzBdKTtcblxuICBjb25zdCBwcm92aWRlclJlcXVpcmVtZW50cyA9IEFycmF5LmZyb20oXG4gICAgbmV3IFNldChbLi4uZXhwbGljaXRQcm92aWRlcnMsIC4uLmltcGxpY2l0UHJvdmlkZXJzXSksXG4gICkucmVkdWNlKFxuICAgIChjYXJyeSwgcmVxKSA9PiAoeyAuLi5jYXJyeSwgW3JlcV06IFwiKlwiIH0pLFxuICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICk7XG5cbiAgcGxhbi50ZXJyYWZvcm0/LmZvckVhY2goKHsgcmVxdWlyZWRfcHJvdmlkZXJzIH0pID0+XG4gICAgKHJlcXVpcmVkX3Byb3ZpZGVycyB8fCBbXSkuZm9yRWFjaCgocHJvdmlkZXJCbG9jaykgPT5cbiAgICAgIE9iamVjdC5lbnRyaWVzKHByb3ZpZGVyQmxvY2spLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBsZXQgbmFtZSwgdmVyc2lvbjtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIG5hbWUgPSBrZXk7XG4gICAgICAgICAgdmVyc2lvbiA9IHZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5hbWUgPSB2YWx1ZS5zb3VyY2U7XG4gICAgICAgICAgdmVyc2lvbiA9IHZhbHVlLnZlcnNpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gaW1wbGljaXRseSBvbmx5IHRoZSBsYXN0IHBhcnQgb2YgdGhlIHBhdGggaXMgdXNlZCAoZS5nLiBkb2NrZXIgZm9yIGtyZXV6d2Vya2VyL2RvY2tlcilcbiAgICAgICAgY29uc3QgcGFydHMgPSBuYW1lLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBkZWxldGUgcHJvdmlkZXJSZXF1aXJlbWVudHNbcGFydHMucG9wKCkgfHwgXCJcIl07XG4gICAgICAgIH1cbiAgICAgICAgcHJvdmlkZXJSZXF1aXJlbWVudHNbbmFtZV0gPSB2ZXJzaW9uIHx8IFwiKlwiO1xuICAgICAgfSksXG4gICAgKSxcbiAgKTtcblxuICByZXR1cm4gcHJvdmlkZXJSZXF1aXJlbWVudHM7XG59XG4iXX0=
|
package/lib/references.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Copyright (c) HashiCorp, Inc.
|
|
4
|
-
* SPDX-License-Identifier: MPL-2.0
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.findUsedReferences = exports.extractReferencesFromExpression = exports.containsReference = exports.referenceToVariableName = void 0;
|
|
8
|
-
const hcl2json_1 = require("@cdktn/hcl2json");
|
|
9
|
-
const utils_1 = require("./utils");
|
|
10
|
-
const variables_1 = require("./variables");
|
|
11
|
-
function referenceToVariableName(scope, ref) {
|
|
12
|
-
const parts = ref.referencee.id.split(".");
|
|
13
|
-
const resource = parts[0] === "data" ? `${parts[0]}.${parts[1]}` : parts[0];
|
|
14
|
-
const name = parts[0] === "data" ? parts[2] : parts[1];
|
|
15
|
-
return (0, variables_1.variableName)(scope, resource, name);
|
|
16
|
-
}
|
|
17
|
-
exports.referenceToVariableName = referenceToVariableName;
|
|
18
|
-
function containsReference(expression) {
|
|
19
|
-
if (!hcl2json_1.TFExpressionSyntaxTree.isScopeTraversalExpression(expression)) {
|
|
20
|
-
return false;
|
|
21
|
-
}
|
|
22
|
-
const segments = expression.meta.traversal;
|
|
23
|
-
const rootSegment = segments[0].segment;
|
|
24
|
-
const fullAccessor = expression.meta.fullAccessor;
|
|
25
|
-
if (rootSegment === "count" || // count variable
|
|
26
|
-
rootSegment === "each" || // each variable
|
|
27
|
-
// https://www.terraform.io/docs/language/expressions/references.html#filesystem-and-workspace-info
|
|
28
|
-
fullAccessor.startsWith("path.module") ||
|
|
29
|
-
fullAccessor.startsWith("path.root") ||
|
|
30
|
-
fullAccessor.startsWith("path.cwd") ||
|
|
31
|
-
fullAccessor.startsWith("terraform.workspace") ||
|
|
32
|
-
fullAccessor.startsWith("self.") // block local value
|
|
33
|
-
) {
|
|
34
|
-
utils_1.logger.debug(`skipping ${fullAccessor}`);
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
return true;
|
|
38
|
-
}
|
|
39
|
-
exports.containsReference = containsReference;
|
|
40
|
-
async function extractReferencesFromExpression(input, nodeIds, scopedIds = []) {
|
|
41
|
-
utils_1.logger.debug(`extractReferencesFromExpression(${input})`);
|
|
42
|
-
const possibleVariableSpots = await (0, hcl2json_1.getReferencesInExpression)("main.tf", input);
|
|
43
|
-
utils_1.logger.debug(`found possible variable spots: ${JSON.stringify(possibleVariableSpots)}`);
|
|
44
|
-
return possibleVariableSpots.reduce((carry, spot) => {
|
|
45
|
-
const { value, startPosition, endPosition } = spot;
|
|
46
|
-
// no reference
|
|
47
|
-
if (!value.includes(".") || // just a literal
|
|
48
|
-
value.startsWith(".") || // dangling property access
|
|
49
|
-
value.endsWith("...") || // spread (likely in for loop)
|
|
50
|
-
value.startsWith("count.") || // count variable
|
|
51
|
-
value.startsWith("each.") || // each variable
|
|
52
|
-
// https://www.terraform.io/docs/language/expressions/references.html#filesystem-and-workspace-info
|
|
53
|
-
value.startsWith("path.module") ||
|
|
54
|
-
value.startsWith("path.root") ||
|
|
55
|
-
value.startsWith("path.cwd") ||
|
|
56
|
-
value.startsWith("terraform.workspace") ||
|
|
57
|
-
value.startsWith("self.") // block local value
|
|
58
|
-
) {
|
|
59
|
-
utils_1.logger.debug(`skipping ${value}`);
|
|
60
|
-
return carry;
|
|
61
|
-
}
|
|
62
|
-
const referenceParts = value.split(".");
|
|
63
|
-
utils_1.logger.debug(`Searching for node id '${value}' in ${JSON.stringify(nodeIds)}`);
|
|
64
|
-
const corespondingNodeId = [...nodeIds, ...scopedIds].find((id) => {
|
|
65
|
-
const parts = id.split(".");
|
|
66
|
-
const matchesFirst = parts[0] === referenceParts[0];
|
|
67
|
-
const matchesFirstTwo = matchesFirst &&
|
|
68
|
-
(parts[1] === referenceParts[1] || referenceParts.length === 1);
|
|
69
|
-
return (matchesFirstTwo &&
|
|
70
|
-
(parts[0] === "data" ? parts[2] === referenceParts[2] : true));
|
|
71
|
-
});
|
|
72
|
-
if (!corespondingNodeId) {
|
|
73
|
-
// This is most likely a false positive, so we just ignore it
|
|
74
|
-
// We include the log below to help debugging
|
|
75
|
-
utils_1.logger.error(`Found a reference that is unknown: ${input} has reference "${value}".The id was not found in ${JSON.stringify(nodeIds)} with temporary values ${JSON.stringify(scopedIds)}.
|
|
76
|
-
${utils_1.leaveCommentText}`);
|
|
77
|
-
return carry;
|
|
78
|
-
}
|
|
79
|
-
if (scopedIds.includes(corespondingNodeId)) {
|
|
80
|
-
utils_1.logger.debug(`skipping '${value}' since it's a scoped variable`);
|
|
81
|
-
return carry;
|
|
82
|
-
}
|
|
83
|
-
utils_1.logger.debug(`Found node id '${corespondingNodeId}'`);
|
|
84
|
-
const spotParts = value.split(".");
|
|
85
|
-
let isThereANumericAccessor = false;
|
|
86
|
-
const referenceSpotParts = spotParts.filter((part) => {
|
|
87
|
-
if (!Number.isNaN(parseInt(part, 10))) {
|
|
88
|
-
isThereANumericAccessor = true;
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
return !isThereANumericAccessor;
|
|
92
|
-
});
|
|
93
|
-
const fullReference = isThereANumericAccessor
|
|
94
|
-
? referenceSpotParts.slice(0, 2).join(".")
|
|
95
|
-
: value;
|
|
96
|
-
const isVariable = value.startsWith("var.");
|
|
97
|
-
const useFqn =
|
|
98
|
-
// Can not use FQN on vars
|
|
99
|
-
!isVariable &&
|
|
100
|
-
// Can not use FQN on locals
|
|
101
|
-
!value.startsWith("local.") &&
|
|
102
|
-
// If the following character is
|
|
103
|
-
(input.substr(endPosition + 1, 1) === "*" || // a * (splat) we need to use the FQN
|
|
104
|
-
input.substr(endPosition, 1) === "[" || // a property access
|
|
105
|
-
isThereANumericAccessor); // a numeric access
|
|
106
|
-
const ref = {
|
|
107
|
-
start: startPosition,
|
|
108
|
-
end: endPosition,
|
|
109
|
-
referencee: {
|
|
110
|
-
id: corespondingNodeId,
|
|
111
|
-
full: fullReference,
|
|
112
|
-
},
|
|
113
|
-
useFqn,
|
|
114
|
-
isVariable,
|
|
115
|
-
};
|
|
116
|
-
utils_1.logger.debug(`Found reference ${JSON.stringify(ref)}`);
|
|
117
|
-
return [...carry, ref];
|
|
118
|
-
}, []);
|
|
119
|
-
}
|
|
120
|
-
exports.extractReferencesFromExpression = extractReferencesFromExpression;
|
|
121
|
-
async function findUsedReferences(nodeIds, item) {
|
|
122
|
-
utils_1.logger.debug(`findUsedReferences(${nodeIds}, ${item})`);
|
|
123
|
-
if (typeof item === "string") {
|
|
124
|
-
return await extractReferencesFromExpression(item, nodeIds, []);
|
|
125
|
-
}
|
|
126
|
-
if (typeof item !== "object" || item === null || item === undefined) {
|
|
127
|
-
return [];
|
|
128
|
-
}
|
|
129
|
-
if (Array.isArray(item)) {
|
|
130
|
-
return (await Promise.all(item.map((i) => findUsedReferences(nodeIds, i)))).flat();
|
|
131
|
-
}
|
|
132
|
-
if (item && "dynamic" in item) {
|
|
133
|
-
const dyn = item["dynamic"];
|
|
134
|
-
const { for_each, ...others } = dyn;
|
|
135
|
-
const dynamicRef = Object.keys(others)[0];
|
|
136
|
-
return await findUsedReferences([...nodeIds, dynamicRef], dyn);
|
|
137
|
-
}
|
|
138
|
-
return (await Promise.all(Object.values(item).map((i) => findUsedReferences(nodeIds, i)))).flat();
|
|
139
|
-
}
|
|
140
|
-
exports.findUsedReferences = findUsedReferences;
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmZXJlbmNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlZmVyZW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBRUgsOENBR3lCO0FBQ3pCLG1DQUFtRDtBQUVuRCwyQ0FBMkM7QUFFM0MsU0FBZ0IsdUJBQXVCLENBQ3JDLEtBQW1CLEVBQ25CLEdBQWM7SUFFZCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxPQUFPLElBQUEsd0JBQVksRUFBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFSRCwwREFRQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLFVBQThCO0lBQzlELElBQUksQ0FBQyxpQ0FBRyxDQUFDLDBCQUEwQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDaEQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDM0MsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN4QyxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMs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O0lBRUQsT0FBTyxDQUNMLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixNQUFNLENBQUMsTUFBTSxDQUFDLElBQTJCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNuRCxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQy9CLENBQ0YsQ0FDRixDQUFDLElBQUksRUFBRSxDQUFDO0FBQ1gsQ0FBQztBQWpDRCxnREFpQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7XG4gIGdldFJlZmVyZW5jZXNJbkV4cHJlc3Npb24sXG4gIFRGRXhwcmVzc2lvblN5bnRheFRyZWUgYXMgdGV4LFxufSBmcm9tIFwiQGNka3RuL2hjbDJqc29uXCI7XG5pbXBvcnQgeyBsZWF2ZUNvbW1lbnRUZXh0LCBsb2dnZXIgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgUHJvZ3JhbVNjb3BlLCBSZWZlcmVuY2UsIFRlcnJhZm9ybVJlc291cmNlQmxvY2sgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgdmFyaWFibGVOYW1lIH0gZnJvbSBcIi4vdmFyaWFibGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZlcmVuY2VUb1ZhcmlhYmxlTmFtZShcbiAgc2NvcGU6IFByb2dyYW1TY29wZSxcbiAgcmVmOiBSZWZlcmVuY2UsXG4pOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0cyA9IHJlZi5yZWZlcmVuY2VlLmlkLnNwbGl0KFwiLlwiKTtcbiAgY29uc3QgcmVzb3VyY2UgPSBwYXJ0c1swXSA9PT0gXCJkYXRhXCIgPyBgJHtwYXJ0c1swXX0uJHtwYXJ0c1sxXX1gIDogcGFydHNbMF07XG4gIGNvbnN0IG5hbWUgPSBwYXJ0c1swXSA9PT0gXCJkYXRhXCIgPyBwYXJ0c1syXSA6IHBhcnRzWzFdO1xuICByZXR1cm4gdmFyaWFibGVOYW1lKHNjb3BlLCByZXNvdXJjZSwgbmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc1JlZmVyZW5jZShleHByZXNzaW9uOiB0ZXguRXhwcmVzc2lvblR5cGUpIHtcbiAgaWYgKCF0ZXguaXNTY29wZVRyYXZlcnNhbEV4cHJlc3Npb24oZXhwcmVzc2lvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBzZWdtZW50cyA9IGV4cHJlc3Npb24ubWV0YS50cmF2ZXJzYWw7XG4gIGNvbnN0IHJvb3RTZWdtZW50ID0gc2VnbWVudHNbMF0uc2VnbWVudDtcbiAgY29uc3QgZnVsbEFjY2Vzc29yID0gZXhwcmVzc2lvbi5tZXRhLmZ1bGxBY2Nlc3NvcjtcblxuICBpZiAoXG4gICAgcm9vdFNlZ21lbnQgPT09IFwiY291bnRcIiB8fCAvLyBjb3VudCB2YXJpYWJsZVxuICAgIHJvb3RTZWdtZW50ID09PSBcImVhY2hcIiB8fCAvLyBlYWNoIHZhcmlhYmxlXG4gICAgLy8gaHR0cHM6Ly93d3cudGVycmFmb3JtLmlvL2RvY3MvbGFuZ3VhZ2UvZXhwcmVzc2lvbnMvcmVmZXJlbmNlcy5odG1sI2ZpbGVzeXN0ZW0tYW5kLXdvcmtzcGFjZS1pbmZvXG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJwYXRoLm1vZHVsZVwiKSB8fFxuICAgIGZ1bGxBY2Nlc3Nvci5zdGFydHNXaXRoKFwicGF0aC5yb290XCIpIHx8XG4gICAgZnVsbEFjY2Vzc29yLnN0YXJ0c1dpdGgoXCJwYXRoLmN3ZFwiKSB8fFxuICAgIGZ1bGxBY2Nlc3Nvci5zdGFydHNXaXRoKFwidGVycmFmb3JtLndvcmtzcGFjZVwiKSB8fFxuICAgIGZ1bGxBY2Nlc3Nvci5zdGFydHNXaXRoKFwic2VsZi5cIikgLy8gYmxvY2sgbG9jYWwgdmFsdWVcbiAgKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBza2lwcGluZyAke2Z1bGxBY2Nlc3Nvcn1gKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RSZWZlcmVuY2VzRnJvbUV4cHJlc3Npb24oXG4gIGlucHV0OiBzdHJpbmcsXG4gIG5vZGVJZHM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBzY29wZWRJZHM6IHJlYWRvbmx5IHN0cmluZ1tdID0gW10sIC8vIGR5bmFtaWNzIGludHJvZHVjZSBuZXcgc2NvcGVkIHZhcmlhYmxlcyB0aGF0IGFyZSBub3QgdGhlIGdsb2JhbGx5IGFjY2Vzc2libGUgaWRzXG4pOiBQcm9taXNlPFJlZmVyZW5jZVtdPiB7XG4gIGxvZ2dlci5kZWJ1ZyhgZXh0cmFjdFJlZmVyZW5jZXNGcm9tRXhwcmVzc2lvbigke2lucHV0fSlgKTtcbiAgY29uc3QgcG9zc2libGVWYXJpYWJsZVNwb3RzID0gYXdhaXQgZ2V0UmVmZXJlbmNlc0luRXhwcmVzc2lvbihcbiAgICBcIm1haW4udGZcIixcbiAgICBpbnB1dCxcbiAgKTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYGZvdW5kIHBvc3NpYmxlIHZhcmlhYmxlIHNwb3RzOiAke0pTT04uc3RyaW5naWZ5KHBvc3NpYmxlVmFyaWFibGVTcG90cyl9YCxcbiAgKTtcblxuICByZXR1cm4gcG9zc2libGVWYXJpYWJsZVNwb3RzLnJlZHVjZSgoY2FycnksIHNwb3QpID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiB9ID0gc3BvdDtcbiAgICAvLyBubyByZWZlcmVuY2VcbiAgICBpZiAoXG4gICAgICAhdmFsdWUuaW5jbHVkZXMoXCIuXCIpIHx8IC8vIGp1c3QgYSBsaXRlcmFsXG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwiLlwiKSB8fCAvLyBkYW5nbGluZyBwcm9wZXJ0eSBhY2Nlc3NcbiAgICAgIHZhbHVlLmVuZHNXaXRoKFwiLi4uXCIpIHx8IC8vIHNwcmVhZCAobGlrZWx5IGluIGZvciBsb29wKVxuICAgICAgdmFsdWUuc3RhcnRzV2l0aChcImNvdW50LlwiKSB8fCAvLyBjb3VudCB2YXJpYWJsZVxuICAgICAgdmFsdWUuc3RhcnRzV2l0aChcImVhY2guXCIpIHx8IC8vIGVhY2ggdmFyaWFibGVcbiAgICAgIC8vIGh0dHBzOi8vd3d3LnRlcnJhZm9ybS5pby9kb2NzL2xhbmd1YWdlL2V4cHJlc3Npb25zL3JlZmVyZW5jZXMuaHRtbCNmaWxlc3lzdGVtLWFuZC13b3Jrc3BhY2UtaW5mb1xuICAgICAgdmFsdWUuc3RhcnRzV2l0aChcInBhdGgubW9kdWxlXCIpIHx8XG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwicGF0aC5yb290XCIpIHx8XG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwicGF0aC5jd2RcIikgfHxcbiAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJ0ZXJyYWZvcm0ud29ya3NwYWNlXCIpIHx8XG4gICAgICB2YWx1ZS5zdGFydHNXaXRoKFwic2VsZi5cIikgLy8gYmxvY2sgbG9jYWwgdmFsdWVcbiAgICApIHtcbiAgICAgIGxvZ2dlci5kZWJ1Zyhgc2tpcHBpbmcgJHt2YWx1ZX1gKTtcbiAgICAgIHJldHVybiBjYXJyeTtcbiAgICB9XG5cbiAgICBjb25zdCByZWZlcmVuY2VQYXJ0cyA9IHZhbHVlLnNwbGl0KFwiLlwiKTtcblxuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBTZWFyY2hpbmcgZm9yIG5vZGUgaWQgJyR7dmFsdWV9JyBpbiAke0pTT04uc3RyaW5naWZ5KG5vZGVJZHMpfWAsXG4gICAgKTtcbiAgICBjb25zdCBjb3Jlc3BvbmRpbmdOb2RlSWQgPSBbLi4ubm9kZUlkcywgLi4uc2NvcGVkSWRzXS5maW5kKChpZCkgPT4ge1xuICAgICAgY29uc3QgcGFydHMgPSBpZC5zcGxpdChcIi5cIik7XG4gICAgICBjb25zdCBtYXRjaGVzRmlyc3QgPSBwYXJ0c1swXSA9PT0gcmVmZXJlbmNlUGFydHNbMF07XG4gICAgICBjb25zdCBtYXRjaGVzRmlyc3RUd28gPVxuICAgICAgICBtYXRjaGVzRmlyc3QgJiZcbiAgICAgICAgKHBhcnRzWzFdID09PSByZWZlcmVuY2VQYXJ0c1sxXSB8fCByZWZlcmVuY2VQYXJ0cy5sZW5ndGggPT09IDEpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICBtYXRjaGVzRmlyc3RUd28gJiZcbiAgICAgICAgKHBhcnRzWzBdID09PSBcImRhdGFcIiA/IHBhcnRzWzJdID09PSByZWZlcmVuY2VQYXJ0c1syXSA6IHRydWUpXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaWYgKCFjb3Jlc3BvbmRpbmdOb2RlSWQpIHtcbiAgICAgIC8vIFRoaXMgaXMgbW9zdCBsaWtlbHkgYSBmYWxzZSBwb3NpdGl2ZSwgc28gd2UganVzdCBpZ25vcmUgaXRcbiAgICAgIC8vIFdlIGluY2x1ZGUgdGhlIGxvZyBiZWxvdyB0byBoZWxwIGRlYnVnZ2luZ1xuICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICBgRm91bmQgYSByZWZlcmVuY2UgdGhhdCBpcyB1bmtub3duOiAke2lucHV0fSBoYXMgcmVmZXJlbmNlIFwiJHt2YWx1ZX1cIi5UaGUgaWQgd2FzIG5vdCBmb3VuZCBpbiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIG5vZGVJZHMsXG4gICAgICAgICl9IHdpdGggdGVtcG9yYXJ5IHZhbHVlcyAke0pTT04uc3RyaW5naWZ5KHNjb3BlZElkcyl9LlxuJHtsZWF2ZUNvbW1lbnRUZXh0fWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGNhcnJ5O1xuICAgIH1cblxuICAgIGlmIChzY29wZWRJZHMuaW5jbHVkZXMoY29yZXNwb25kaW5nTm9kZUlkKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBza2lwcGluZyAnJHt2YWx1ZX0nIHNpbmNlIGl0J3MgYSBzY29wZWQgdmFyaWFibGVgKTtcbiAgICAgIHJldHVybiBjYXJyeTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKGBGb3VuZCBub2RlIGlkICcke2NvcmVzcG9uZGluZ05vZGVJZH0nYCk7XG5cbiAgICBjb25zdCBzcG90UGFydHMgPSB2YWx1ZS5zcGxpdChcIi5cIik7XG4gICAgbGV0IGlzVGhlcmVBTnVtZXJpY0FjY2Vzc29yID0gZmFsc2U7XG4gICAgY29uc3QgcmVmZXJlbmNlU3BvdFBhcnRzID0gc3BvdFBhcnRzLmZpbHRlcigocGFydCkgPT4ge1xuICAgICAgaWYgKCFOdW1iZXIuaXNOYU4ocGFyc2VJbnQocGFydCwgMTApKSkge1xuICAgICAgICBpc1RoZXJlQU51bWVyaWNBY2Nlc3NvciA9IHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFpc1RoZXJlQU51bWVyaWNBY2Nlc3NvcjtcbiAgICB9KTtcbiAgICBjb25zdCBmdWxsUmVmZXJlbmNlID0gaXNUaGVyZUFOdW1lcmljQWNjZXNzb3JcbiAgICAgID8gcmVmZXJlbmNlU3BvdFBhcnRzLnNsaWNlKDAsIDIpLmpvaW4oXCIuXCIpXG4gICAgICA6IHZhbHVlO1xuXG4gICAgY29uc3QgaXNWYXJpYWJsZSA9IHZhbHVlLnN0YXJ0c1dpdGgoXCJ2YXIuXCIpO1xuICAgIGNvbnN0IHVzZUZxbiA9XG4gICAgICAvLyBDYW4gbm90IHVzZSBGUU4gb24gdmFyc1xuICAgICAgIWlzVmFyaWFibGUgJiZcbiAgICAgIC8vIENhbiBub3QgdXNlIEZRTiBvbiBsb2NhbHNcbiAgICAgICF2YWx1ZS5zdGFydHNXaXRoKFwibG9jYWwuXCIpICYmXG4gICAgICAvLyBJZiB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciBpc1xuICAgICAgKGlucHV0LnN1YnN0cihlbmRQb3NpdGlvbiArIDEsIDEpID09PSBcIipcIiB8fCAvLyBhICogKHNwbGF0KSB3ZSBuZWVkIHRvIHVzZSB0aGUgRlFOXG4gICAgICAgIGlucHV0LnN1YnN0cihlbmRQb3NpdGlvbiwgMSkgPT09IFwiW1wiIHx8IC8vIGEgcHJvcGVydHkgYWNjZXNzXG4gICAgICAgIGlzVGhlcmVBTnVtZXJpY0FjY2Vzc29yKTsgLy8gYSBudW1lcmljIGFjY2Vzc1xuXG4gICAgY29uc3QgcmVmOiBSZWZlcmVuY2UgPSB7XG4gICAgICBzdGFydDogc3RhcnRQb3NpdGlvbixcbiAgICAgIGVuZDogZW5kUG9zaXRpb24sXG4gICAgICByZWZlcmVuY2VlOiB7XG4gICAgICAgIGlkOiBjb3Jlc3BvbmRpbmdOb2RlSWQsXG4gICAgICAgIGZ1bGw6IGZ1bGxSZWZlcmVuY2UsXG4gICAgICB9LFxuICAgICAgdXNlRnFuLFxuICAgICAgaXNWYXJpYWJsZSxcbiAgICB9O1xuICAgIGxvZ2dlci5kZWJ1ZyhgRm91bmQgcmVmZXJlbmNlICR7SlNPTi5zdHJpbmdpZnkocmVmKX1gKTtcbiAgICByZXR1cm4gWy4uLmNhcnJ5LCByZWZdO1xuICB9LCBbXSBhcyBSZWZlcmVuY2VbXSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmaW5kVXNlZFJlZmVyZW5jZXMoXG4gIG5vZGVJZHM6IHN0cmluZ1tdLFxuICBpdGVtOiBUZXJyYWZvcm1SZXNvdXJjZUJsb2NrLFxuKTogUHJvbWlzZTxSZWZlcmVuY2VbXT4ge1xuICBsb2dnZXIuZGVidWcoYGZpbmRVc2VkUmVmZXJlbmNlcygke25vZGVJZHN9LCAke2l0ZW19KWApO1xuICBpZiAodHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gYXdhaXQgZXh0cmFjdFJlZmVyZW5jZXNGcm9tRXhwcmVzc2lvbihpdGVtLCBub2RlSWRzLCBbXSk7XG4gIH1cblxuICBpZiAodHlwZW9mIGl0ZW0gIT09IFwib2JqZWN0XCIgfHwgaXRlbSA9PT0gbnVsbCB8fCBpdGVtID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChpdGVtLm1hcCgoaSkgPT4gZmluZFVzZWRSZWZlcmVuY2VzKG5vZGVJZHMsIGkpKSlcbiAgICApLmZsYXQoKTtcbiAgfVxuXG4gIGlmIChpdGVtICYmIFwiZHluYW1pY1wiIGluIGl0ZW0pIHtcbiAgICBjb25zdCBkeW4gPSAoaXRlbSBhcyBhbnkpW1wiZHluYW1pY1wiXTtcbiAgICBjb25zdCB7IGZvcl9lYWNoLCAuLi5vdGhlcnMgfSA9IGR5bjtcbiAgICBjb25zdCBkeW5hbWljUmVmID0gT2JqZWN0LmtleXMob3RoZXJzKVswXTtcbiAgICByZXR1cm4gYXdhaXQgZmluZFVzZWRSZWZlcmVuY2VzKFsuLi5ub2RlSWRzLCBkeW5hbWljUmVmXSwgZHluKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBPYmplY3QudmFsdWVzKGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgYW55PikubWFwKChpKSA9PlxuICAgICAgICBmaW5kVXNlZFJlZmVyZW5jZXMobm9kZUlkcywgaSksXG4gICAgICApLFxuICAgIClcbiAgKS5mbGF0KCk7XG59XG4iXX0=
|