@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.
Files changed (85) hide show
  1. package/ambient.d.ts +0 -1
  2. package/build/__tests__/coerceType.test.js +165 -0
  3. package/build/__tests__/expressionToTs.test.js +693 -0
  4. package/build/__tests__/expressions.test.js +415 -0
  5. package/build/__tests__/findExpressionType.test.js +105 -0
  6. package/build/__tests__/functions.test.js +605 -0
  7. package/build/__tests__/generation.test.js +45 -0
  8. package/build/__tests__/jsii-rosetta-workarounds.test.js +86 -0
  9. package/build/__tests__/partialCode.test.js +390 -0
  10. package/build/__tests__/terraformSchema.test.js +105 -0
  11. package/build/__tests__/testHelpers.js +16 -0
  12. package/build/coerceType.js +240 -0
  13. package/build/dynamic-blocks.js +44 -0
  14. package/build/expressions.js +633 -0
  15. package/build/function-bindings/functions.generated.js +1142 -0
  16. package/build/function-bindings/functions.js +73 -0
  17. package/{lib → build}/generation.js +4 -4
  18. package/{lib → build}/index.d.ts +2 -2
  19. package/build/index.js +364 -0
  20. package/build/iteration.js +87 -0
  21. package/build/jsii-rosetta-workarounds.js +126 -0
  22. package/build/partialCode.js +116 -0
  23. package/build/provider.js +40 -0
  24. package/build/references.js +141 -0
  25. package/build/schema.js +81 -0
  26. package/build/telemetryAllowList.json +24 -0
  27. package/build/terraformSchema.js +136 -0
  28. package/build/types.js +3 -0
  29. package/build/utils.js +25 -0
  30. package/build/variables.js +172 -0
  31. package/package.json +13 -14
  32. package/tsconfig.json +4 -2
  33. package/lib/__tests__/coerceType.test.js +0 -165
  34. package/lib/__tests__/expressionToTs.test.js +0 -693
  35. package/lib/__tests__/expressions.test.js +0 -415
  36. package/lib/__tests__/findExpressionType.test.js +0 -105
  37. package/lib/__tests__/functions.test.js +0 -605
  38. package/lib/__tests__/generation.test.js +0 -45
  39. package/lib/__tests__/jsii-rosetta-workarounds.test.js +0 -86
  40. package/lib/__tests__/partialCode.test.js +0 -390
  41. package/lib/__tests__/terraformSchema.test.js +0 -105
  42. package/lib/__tests__/testHelpers.js +0 -16
  43. package/lib/coerceType.js +0 -240
  44. package/lib/dynamic-blocks.js +0 -44
  45. package/lib/expressions.js +0 -634
  46. package/lib/function-bindings/functions.generated.js +0 -1142
  47. package/lib/function-bindings/functions.js +0 -73
  48. package/lib/index.js +0 -364
  49. package/lib/iteration.js +0 -87
  50. package/lib/jsii-rosetta-workarounds.js +0 -126
  51. package/lib/partialCode.js +0 -116
  52. package/lib/provider.js +0 -40
  53. package/lib/references.js +0 -141
  54. package/lib/schema.js +0 -81
  55. package/lib/terraformSchema.js +0 -136
  56. package/lib/types.js +0 -3
  57. package/lib/utils.js +0 -25
  58. package/lib/variables.js +0 -172
  59. /package/{lib → build}/__tests__/coerceType.test.d.ts +0 -0
  60. /package/{lib → build}/__tests__/expressionToTs.test.d.ts +0 -0
  61. /package/{lib → build}/__tests__/expressions.test.d.ts +0 -0
  62. /package/{lib → build}/__tests__/findExpressionType.test.d.ts +0 -0
  63. /package/{lib → build}/__tests__/functions.test.d.ts +0 -0
  64. /package/{lib → build}/__tests__/generation.test.d.ts +0 -0
  65. /package/{lib → build}/__tests__/jsii-rosetta-workarounds.test.d.ts +0 -0
  66. /package/{lib → build}/__tests__/partialCode.test.d.ts +0 -0
  67. /package/{lib → build}/__tests__/terraformSchema.test.d.ts +0 -0
  68. /package/{lib → build}/__tests__/testHelpers.d.ts +0 -0
  69. /package/{lib → build}/coerceType.d.ts +0 -0
  70. /package/{lib → build}/dynamic-blocks.d.ts +0 -0
  71. /package/{lib → build}/expressions.d.ts +0 -0
  72. /package/{lib → build}/function-bindings/functions.d.ts +0 -0
  73. /package/{lib → build}/function-bindings/functions.generated.d.ts +0 -0
  74. /package/{lib → build}/generation.d.ts +0 -0
  75. /package/{lib → build}/iteration.d.ts +0 -0
  76. /package/{lib → build}/jsii-rosetta-workarounds.d.ts +0 -0
  77. /package/{lib → build}/partialCode.d.ts +0 -0
  78. /package/{lib → build}/provider.d.ts +0 -0
  79. /package/{lib → build}/references.d.ts +0 -0
  80. /package/{lib → build}/schema.d.ts +0 -0
  81. /package/{lib → build}/terraformSchema.d.ts +0 -0
  82. /package/{lib → build}/types.d.ts +0 -0
  83. /package/{lib → build}/utils.d.ts +0 -0
  84. /package/{lib → build}/variables.d.ts +0 -0
  85. /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=
@@ -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=