cdktn 0.23.2 → 0.23.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/.jsii +468 -251
  2. package/README.md +3 -3
  3. package/lib/annotations.js +1 -1
  4. package/lib/app.js +1 -1
  5. package/lib/aspect.js +1 -1
  6. package/lib/backends/azurerm-backend.js +2 -2
  7. package/lib/backends/cloud-backend.js +4 -4
  8. package/lib/backends/consul-backend.js +2 -2
  9. package/lib/backends/cos-backend.js +2 -2
  10. package/lib/backends/gcs-backend.js +2 -2
  11. package/lib/backends/http-backend.js +2 -2
  12. package/lib/backends/local-backend.js +2 -2
  13. package/lib/backends/oss-backend.js +2 -2
  14. package/lib/backends/pg-backend.js +2 -2
  15. package/lib/backends/remote-backend.js +4 -4
  16. package/lib/backends/s3-backend.d.ts +11 -1
  17. package/lib/backends/s3-backend.js +11 -4
  18. package/lib/backends/swift-backend.js +2 -2
  19. package/lib/complex-computed-list.js +25 -25
  20. package/lib/errors.d.ts +1 -2
  21. package/lib/errors.js +11 -8
  22. package/lib/features.d.ts +9 -0
  23. package/lib/features.js +11 -2
  24. package/lib/functions/function-availability.generated.d.ts +16 -0
  25. package/lib/functions/function-availability.generated.js +21 -0
  26. package/lib/functions/helpers.js +3 -1
  27. package/lib/functions/terraform-functions.generated.d.ts +40 -2
  28. package/lib/functions/terraform-functions.generated.js +57 -5
  29. package/lib/functions/usage-registry.d.ts +6 -0
  30. package/lib/functions/usage-registry.js +34 -0
  31. package/lib/importable-resource.js +1 -1
  32. package/lib/manifest.js +4 -5
  33. package/lib/resource.js +1 -1
  34. package/lib/synthesize/synthesizer.js +8 -5
  35. package/lib/terraform-asset.js +1 -1
  36. package/lib/terraform-backend.js +1 -1
  37. package/lib/terraform-count.js +1 -1
  38. package/lib/terraform-data-resource.js +1 -1
  39. package/lib/terraform-data-source.js +1 -1
  40. package/lib/terraform-dynamic-block.js +2 -2
  41. package/lib/terraform-dynamic-expression.js +2 -2
  42. package/lib/terraform-element.js +1 -1
  43. package/lib/terraform-functions.js +1 -1
  44. package/lib/terraform-hcl-module.js +1 -1
  45. package/lib/terraform-iterator.js +5 -5
  46. package/lib/terraform-local.js +1 -1
  47. package/lib/terraform-module.js +1 -1
  48. package/lib/terraform-operators.js +1 -1
  49. package/lib/terraform-output.js +1 -1
  50. package/lib/terraform-provider.js +1 -1
  51. package/lib/terraform-provisioner.js +1 -1
  52. package/lib/terraform-remote-state.js +1 -1
  53. package/lib/terraform-resource-targets.js +1 -1
  54. package/lib/terraform-resource.js +1 -1
  55. package/lib/terraform-stack.js +6 -2
  56. package/lib/terraform-variable.js +2 -2
  57. package/lib/testing/index.js +8 -9
  58. package/lib/testing/matchers.js +1 -1
  59. package/lib/tokens/lazy.js +4 -4
  60. package/lib/tokens/private/intrinsic.d.ts +0 -5
  61. package/lib/tokens/private/intrinsic.js +2 -9
  62. package/lib/tokens/private/stack-trace.d.ts +6 -0
  63. package/lib/tokens/private/stack-trace.js +14 -1
  64. package/lib/tokens/resolvable.js +4 -4
  65. package/lib/tokens/string-fragments.js +1 -1
  66. package/lib/tokens/token.js +2 -2
  67. package/lib/tsconfig.tsbuildinfo +1 -1
  68. package/lib/upgrade-id-aspect.js +1 -1
  69. package/lib/validations/index.d.ts +3 -0
  70. package/lib/validations/index.js +4 -1
  71. package/lib/validations/target-versions.d.ts +71 -0
  72. package/lib/validations/target-versions.js +132 -0
  73. package/lib/validations/validate-binary-version.d.ts +10 -0
  74. package/lib/validations/validate-binary-version.js +11 -1
  75. package/lib/validations/validate-function-version-support.d.ts +21 -0
  76. package/lib/validations/validate-function-version-support.js +53 -0
  77. package/lib/validations/validate-terraform-feature-version.d.ts +34 -0
  78. package/lib/validations/validate-terraform-feature-version.js +34 -0
  79. package/node_modules/{call-bind-apply-helpers → safe-stable-stringify}/LICENSE +2 -2
  80. package/node_modules/safe-stable-stringify/esm/package.json +4 -0
  81. package/node_modules/safe-stable-stringify/esm/wrapper.d.ts +4 -0
  82. package/node_modules/safe-stable-stringify/esm/wrapper.js +6 -0
  83. package/node_modules/safe-stable-stringify/index.d.ts +22 -0
  84. package/node_modules/safe-stable-stringify/index.js +625 -0
  85. package/node_modules/safe-stable-stringify/package.json +65 -0
  86. package/node_modules/safe-stable-stringify/readme.md +179 -0
  87. package/package.json +11 -12
  88. package/scripts/pack.mjs +168 -0
  89. package/node_modules/call-bind/.eslintignore +0 -1
  90. package/node_modules/call-bind/.eslintrc +0 -16
  91. package/node_modules/call-bind/.github/FUNDING.yml +0 -12
  92. package/node_modules/call-bind/.nycrc +0 -9
  93. package/node_modules/call-bind/CHANGELOG.md +0 -106
  94. package/node_modules/call-bind/LICENSE +0 -21
  95. package/node_modules/call-bind/README.md +0 -64
  96. package/node_modules/call-bind/callBound.js +0 -15
  97. package/node_modules/call-bind/index.js +0 -24
  98. package/node_modules/call-bind/package.json +0 -93
  99. package/node_modules/call-bind/test/callBound.js +0 -54
  100. package/node_modules/call-bind/test/index.js +0 -74
  101. package/node_modules/call-bind-apply-helpers/.eslintrc +0 -17
  102. package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +0 -12
  103. package/node_modules/call-bind-apply-helpers/.nycrc +0 -9
  104. package/node_modules/call-bind-apply-helpers/CHANGELOG.md +0 -30
  105. package/node_modules/call-bind-apply-helpers/README.md +0 -62
  106. package/node_modules/call-bind-apply-helpers/actualApply.d.ts +0 -1
  107. package/node_modules/call-bind-apply-helpers/actualApply.js +0 -10
  108. package/node_modules/call-bind-apply-helpers/applyBind.d.ts +0 -19
  109. package/node_modules/call-bind-apply-helpers/applyBind.js +0 -10
  110. package/node_modules/call-bind-apply-helpers/functionApply.d.ts +0 -1
  111. package/node_modules/call-bind-apply-helpers/functionApply.js +0 -4
  112. package/node_modules/call-bind-apply-helpers/functionCall.d.ts +0 -1
  113. package/node_modules/call-bind-apply-helpers/functionCall.js +0 -4
  114. package/node_modules/call-bind-apply-helpers/index.d.ts +0 -64
  115. package/node_modules/call-bind-apply-helpers/index.js +0 -15
  116. package/node_modules/call-bind-apply-helpers/package.json +0 -85
  117. package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +0 -3
  118. package/node_modules/call-bind-apply-helpers/reflectApply.js +0 -4
  119. package/node_modules/call-bind-apply-helpers/test/index.js +0 -63
  120. package/node_modules/call-bind-apply-helpers/tsconfig.json +0 -9
  121. package/node_modules/call-bound/.eslintrc +0 -13
  122. package/node_modules/call-bound/.github/FUNDING.yml +0 -12
  123. package/node_modules/call-bound/.nycrc +0 -9
  124. package/node_modules/call-bound/CHANGELOG.md +0 -42
  125. package/node_modules/call-bound/LICENSE +0 -21
  126. package/node_modules/call-bound/README.md +0 -53
  127. package/node_modules/call-bound/index.d.ts +0 -94
  128. package/node_modules/call-bound/index.js +0 -19
  129. package/node_modules/call-bound/package.json +0 -99
  130. package/node_modules/call-bound/test/index.js +0 -61
  131. package/node_modules/call-bound/tsconfig.json +0 -10
  132. package/node_modules/define-data-property/.eslintrc +0 -24
  133. package/node_modules/define-data-property/.github/FUNDING.yml +0 -12
  134. package/node_modules/define-data-property/.nycrc +0 -13
  135. package/node_modules/define-data-property/CHANGELOG.md +0 -70
  136. package/node_modules/define-data-property/LICENSE +0 -21
  137. package/node_modules/define-data-property/README.md +0 -67
  138. package/node_modules/define-data-property/index.d.ts +0 -12
  139. package/node_modules/define-data-property/index.js +0 -56
  140. package/node_modules/define-data-property/package.json +0 -106
  141. package/node_modules/define-data-property/test/index.js +0 -392
  142. package/node_modules/define-data-property/tsconfig.json +0 -59
  143. package/node_modules/dunder-proto/.eslintrc +0 -5
  144. package/node_modules/dunder-proto/.github/FUNDING.yml +0 -12
  145. package/node_modules/dunder-proto/.nycrc +0 -13
  146. package/node_modules/dunder-proto/CHANGELOG.md +0 -24
  147. package/node_modules/dunder-proto/LICENSE +0 -21
  148. package/node_modules/dunder-proto/README.md +0 -54
  149. package/node_modules/dunder-proto/get.d.ts +0 -5
  150. package/node_modules/dunder-proto/get.js +0 -30
  151. package/node_modules/dunder-proto/package.json +0 -76
  152. package/node_modules/dunder-proto/set.d.ts +0 -5
  153. package/node_modules/dunder-proto/set.js +0 -35
  154. package/node_modules/dunder-proto/test/get.js +0 -34
  155. package/node_modules/dunder-proto/test/index.js +0 -4
  156. package/node_modules/dunder-proto/test/set.js +0 -50
  157. package/node_modules/dunder-proto/tsconfig.json +0 -9
  158. package/node_modules/es-define-property/.eslintrc +0 -13
  159. package/node_modules/es-define-property/.github/FUNDING.yml +0 -12
  160. package/node_modules/es-define-property/.nycrc +0 -9
  161. package/node_modules/es-define-property/CHANGELOG.md +0 -29
  162. package/node_modules/es-define-property/LICENSE +0 -21
  163. package/node_modules/es-define-property/README.md +0 -49
  164. package/node_modules/es-define-property/index.d.ts +0 -3
  165. package/node_modules/es-define-property/index.js +0 -14
  166. package/node_modules/es-define-property/package.json +0 -81
  167. package/node_modules/es-define-property/test/index.js +0 -56
  168. package/node_modules/es-define-property/tsconfig.json +0 -10
  169. package/node_modules/es-errors/.eslintrc +0 -5
  170. package/node_modules/es-errors/.github/FUNDING.yml +0 -12
  171. package/node_modules/es-errors/CHANGELOG.md +0 -40
  172. package/node_modules/es-errors/LICENSE +0 -21
  173. package/node_modules/es-errors/README.md +0 -55
  174. package/node_modules/es-errors/eval.d.ts +0 -3
  175. package/node_modules/es-errors/eval.js +0 -4
  176. package/node_modules/es-errors/index.d.ts +0 -3
  177. package/node_modules/es-errors/index.js +0 -4
  178. package/node_modules/es-errors/package.json +0 -80
  179. package/node_modules/es-errors/range.d.ts +0 -3
  180. package/node_modules/es-errors/range.js +0 -4
  181. package/node_modules/es-errors/ref.d.ts +0 -3
  182. package/node_modules/es-errors/ref.js +0 -4
  183. package/node_modules/es-errors/syntax.d.ts +0 -3
  184. package/node_modules/es-errors/syntax.js +0 -4
  185. package/node_modules/es-errors/test/index.js +0 -19
  186. package/node_modules/es-errors/tsconfig.json +0 -49
  187. package/node_modules/es-errors/type.d.ts +0 -3
  188. package/node_modules/es-errors/type.js +0 -4
  189. package/node_modules/es-errors/uri.d.ts +0 -3
  190. package/node_modules/es-errors/uri.js +0 -4
  191. package/node_modules/es-object-atoms/.eslintrc +0 -16
  192. package/node_modules/es-object-atoms/.github/FUNDING.yml +0 -12
  193. package/node_modules/es-object-atoms/CHANGELOG.md +0 -37
  194. package/node_modules/es-object-atoms/LICENSE +0 -21
  195. package/node_modules/es-object-atoms/README.md +0 -63
  196. package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +0 -3
  197. package/node_modules/es-object-atoms/RequireObjectCoercible.js +0 -11
  198. package/node_modules/es-object-atoms/ToObject.d.ts +0 -7
  199. package/node_modules/es-object-atoms/ToObject.js +0 -10
  200. package/node_modules/es-object-atoms/index.d.ts +0 -3
  201. package/node_modules/es-object-atoms/index.js +0 -4
  202. package/node_modules/es-object-atoms/isObject.d.ts +0 -3
  203. package/node_modules/es-object-atoms/isObject.js +0 -6
  204. package/node_modules/es-object-atoms/package.json +0 -80
  205. package/node_modules/es-object-atoms/test/index.js +0 -38
  206. package/node_modules/es-object-atoms/tsconfig.json +0 -6
  207. package/node_modules/function-bind/.eslintrc +0 -21
  208. package/node_modules/function-bind/.github/FUNDING.yml +0 -12
  209. package/node_modules/function-bind/.github/SECURITY.md +0 -3
  210. package/node_modules/function-bind/.nycrc +0 -13
  211. package/node_modules/function-bind/CHANGELOG.md +0 -136
  212. package/node_modules/function-bind/LICENSE +0 -20
  213. package/node_modules/function-bind/README.md +0 -46
  214. package/node_modules/function-bind/implementation.js +0 -84
  215. package/node_modules/function-bind/index.js +0 -5
  216. package/node_modules/function-bind/package.json +0 -87
  217. package/node_modules/function-bind/test/.eslintrc +0 -9
  218. package/node_modules/function-bind/test/index.js +0 -252
  219. package/node_modules/get-intrinsic/.eslintrc +0 -42
  220. package/node_modules/get-intrinsic/.github/FUNDING.yml +0 -12
  221. package/node_modules/get-intrinsic/.nycrc +0 -9
  222. package/node_modules/get-intrinsic/CHANGELOG.md +0 -186
  223. package/node_modules/get-intrinsic/LICENSE +0 -21
  224. package/node_modules/get-intrinsic/README.md +0 -71
  225. package/node_modules/get-intrinsic/index.js +0 -378
  226. package/node_modules/get-intrinsic/package.json +0 -97
  227. package/node_modules/get-intrinsic/test/GetIntrinsic.js +0 -274
  228. package/node_modules/get-proto/.eslintrc +0 -10
  229. package/node_modules/get-proto/.github/FUNDING.yml +0 -12
  230. package/node_modules/get-proto/.nycrc +0 -9
  231. package/node_modules/get-proto/CHANGELOG.md +0 -21
  232. package/node_modules/get-proto/LICENSE +0 -21
  233. package/node_modules/get-proto/Object.getPrototypeOf.d.ts +0 -5
  234. package/node_modules/get-proto/Object.getPrototypeOf.js +0 -6
  235. package/node_modules/get-proto/README.md +0 -50
  236. package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +0 -3
  237. package/node_modules/get-proto/Reflect.getPrototypeOf.js +0 -4
  238. package/node_modules/get-proto/index.d.ts +0 -5
  239. package/node_modules/get-proto/index.js +0 -27
  240. package/node_modules/get-proto/package.json +0 -81
  241. package/node_modules/get-proto/test/index.js +0 -68
  242. package/node_modules/get-proto/tsconfig.json +0 -9
  243. package/node_modules/gopd/.eslintrc +0 -16
  244. package/node_modules/gopd/.github/FUNDING.yml +0 -12
  245. package/node_modules/gopd/CHANGELOG.md +0 -45
  246. package/node_modules/gopd/LICENSE +0 -21
  247. package/node_modules/gopd/README.md +0 -40
  248. package/node_modules/gopd/gOPD.d.ts +0 -1
  249. package/node_modules/gopd/gOPD.js +0 -4
  250. package/node_modules/gopd/index.d.ts +0 -5
  251. package/node_modules/gopd/index.js +0 -15
  252. package/node_modules/gopd/package.json +0 -77
  253. package/node_modules/gopd/test/index.js +0 -36
  254. package/node_modules/gopd/tsconfig.json +0 -9
  255. package/node_modules/has-property-descriptors/.eslintrc +0 -13
  256. package/node_modules/has-property-descriptors/.github/FUNDING.yml +0 -12
  257. package/node_modules/has-property-descriptors/.nycrc +0 -9
  258. package/node_modules/has-property-descriptors/CHANGELOG.md +0 -35
  259. package/node_modules/has-property-descriptors/LICENSE +0 -21
  260. package/node_modules/has-property-descriptors/README.md +0 -43
  261. package/node_modules/has-property-descriptors/index.js +0 -22
  262. package/node_modules/has-property-descriptors/package.json +0 -77
  263. package/node_modules/has-property-descriptors/test/index.js +0 -57
  264. package/node_modules/has-symbols/.eslintrc +0 -11
  265. package/node_modules/has-symbols/.github/FUNDING.yml +0 -12
  266. package/node_modules/has-symbols/.nycrc +0 -9
  267. package/node_modules/has-symbols/CHANGELOG.md +0 -91
  268. package/node_modules/has-symbols/LICENSE +0 -21
  269. package/node_modules/has-symbols/README.md +0 -46
  270. package/node_modules/has-symbols/index.d.ts +0 -3
  271. package/node_modules/has-symbols/index.js +0 -14
  272. package/node_modules/has-symbols/package.json +0 -111
  273. package/node_modules/has-symbols/shams.d.ts +0 -3
  274. package/node_modules/has-symbols/shams.js +0 -45
  275. package/node_modules/has-symbols/test/index.js +0 -22
  276. package/node_modules/has-symbols/test/shams/core-js.js +0 -29
  277. package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +0 -29
  278. package/node_modules/has-symbols/test/tests.js +0 -58
  279. package/node_modules/has-symbols/tsconfig.json +0 -10
  280. package/node_modules/hasown/.eslintrc +0 -5
  281. package/node_modules/hasown/.github/FUNDING.yml +0 -12
  282. package/node_modules/hasown/.nycrc +0 -13
  283. package/node_modules/hasown/CHANGELOG.md +0 -40
  284. package/node_modules/hasown/LICENSE +0 -21
  285. package/node_modules/hasown/README.md +0 -40
  286. package/node_modules/hasown/index.d.ts +0 -3
  287. package/node_modules/hasown/index.js +0 -8
  288. package/node_modules/hasown/package.json +0 -92
  289. package/node_modules/hasown/tsconfig.json +0 -6
  290. package/node_modules/isarray/LICENSE +0 -21
  291. package/node_modules/isarray/README.md +0 -38
  292. package/node_modules/isarray/index.js +0 -5
  293. package/node_modules/isarray/package.json +0 -48
  294. package/node_modules/json-stable-stringify/.eslintrc +0 -31
  295. package/node_modules/json-stable-stringify/.github/FUNDING.yml +0 -12
  296. package/node_modules/json-stable-stringify/CHANGELOG.md +0 -160
  297. package/node_modules/json-stable-stringify/LICENSE +0 -21
  298. package/node_modules/json-stable-stringify/README.md +0 -157
  299. package/node_modules/json-stable-stringify/example/key_cmp.js +0 -9
  300. package/node_modules/json-stable-stringify/example/nested.js +0 -7
  301. package/node_modules/json-stable-stringify/example/str.js +0 -7
  302. package/node_modules/json-stable-stringify/example/value_cmp.js +0 -12
  303. package/node_modules/json-stable-stringify/index.d.ts +0 -25
  304. package/node_modules/json-stable-stringify/index.js +0 -124
  305. package/node_modules/json-stable-stringify/package.json +0 -88
  306. package/node_modules/json-stable-stringify/test/cmp.js +0 -33
  307. package/node_modules/json-stable-stringify/test/nested.js +0 -48
  308. package/node_modules/json-stable-stringify/test/replacer.js +0 -81
  309. package/node_modules/json-stable-stringify/test/space.js +0 -127
  310. package/node_modules/json-stable-stringify/test/str.js +0 -46
  311. package/node_modules/json-stable-stringify/test/to-json.js +0 -22
  312. package/node_modules/json-stable-stringify/tsconfig.json +0 -10
  313. package/node_modules/jsonify/.eslintrc +0 -21
  314. package/node_modules/jsonify/.github/FUNDING.yml +0 -12
  315. package/node_modules/jsonify/CHANGELOG.md +0 -48
  316. package/node_modules/jsonify/README.md +0 -66
  317. package/node_modules/jsonify/index.js +0 -4
  318. package/node_modules/jsonify/lib/parse.js +0 -261
  319. package/node_modules/jsonify/lib/stringify.js +0 -151
  320. package/node_modules/jsonify/package.json +0 -62
  321. package/node_modules/jsonify/test/parse.js +0 -20
  322. package/node_modules/jsonify/test/stringify.js +0 -18
  323. package/node_modules/math-intrinsics/.eslintrc +0 -16
  324. package/node_modules/math-intrinsics/.github/FUNDING.yml +0 -12
  325. package/node_modules/math-intrinsics/CHANGELOG.md +0 -24
  326. package/node_modules/math-intrinsics/LICENSE +0 -21
  327. package/node_modules/math-intrinsics/README.md +0 -50
  328. package/node_modules/math-intrinsics/abs.d.ts +0 -1
  329. package/node_modules/math-intrinsics/abs.js +0 -4
  330. package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +0 -3
  331. package/node_modules/math-intrinsics/constants/maxArrayLength.js +0 -4
  332. package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +0 -3
  333. package/node_modules/math-intrinsics/constants/maxSafeInteger.js +0 -5
  334. package/node_modules/math-intrinsics/constants/maxValue.d.ts +0 -3
  335. package/node_modules/math-intrinsics/constants/maxValue.js +0 -5
  336. package/node_modules/math-intrinsics/floor.d.ts +0 -1
  337. package/node_modules/math-intrinsics/floor.js +0 -4
  338. package/node_modules/math-intrinsics/isFinite.d.ts +0 -3
  339. package/node_modules/math-intrinsics/isFinite.js +0 -12
  340. package/node_modules/math-intrinsics/isInteger.d.ts +0 -3
  341. package/node_modules/math-intrinsics/isInteger.js +0 -16
  342. package/node_modules/math-intrinsics/isNaN.d.ts +0 -1
  343. package/node_modules/math-intrinsics/isNaN.js +0 -6
  344. package/node_modules/math-intrinsics/isNegativeZero.d.ts +0 -3
  345. package/node_modules/math-intrinsics/isNegativeZero.js +0 -6
  346. package/node_modules/math-intrinsics/max.d.ts +0 -1
  347. package/node_modules/math-intrinsics/max.js +0 -4
  348. package/node_modules/math-intrinsics/min.d.ts +0 -1
  349. package/node_modules/math-intrinsics/min.js +0 -4
  350. package/node_modules/math-intrinsics/mod.d.ts +0 -3
  351. package/node_modules/math-intrinsics/mod.js +0 -9
  352. package/node_modules/math-intrinsics/package.json +0 -86
  353. package/node_modules/math-intrinsics/pow.d.ts +0 -1
  354. package/node_modules/math-intrinsics/pow.js +0 -4
  355. package/node_modules/math-intrinsics/round.d.ts +0 -1
  356. package/node_modules/math-intrinsics/round.js +0 -4
  357. package/node_modules/math-intrinsics/sign.d.ts +0 -3
  358. package/node_modules/math-intrinsics/sign.js +0 -11
  359. package/node_modules/math-intrinsics/test/index.js +0 -192
  360. package/node_modules/math-intrinsics/tsconfig.json +0 -3
  361. package/node_modules/object-keys/.editorconfig +0 -13
  362. package/node_modules/object-keys/.eslintrc +0 -17
  363. package/node_modules/object-keys/.travis.yml +0 -277
  364. package/node_modules/object-keys/CHANGELOG.md +0 -232
  365. package/node_modules/object-keys/LICENSE +0 -21
  366. package/node_modules/object-keys/README.md +0 -76
  367. package/node_modules/object-keys/implementation.js +0 -122
  368. package/node_modules/object-keys/index.js +0 -32
  369. package/node_modules/object-keys/isArguments.js +0 -17
  370. package/node_modules/object-keys/package.json +0 -88
  371. package/node_modules/object-keys/test/index.js +0 -5
  372. package/node_modules/set-function-length/.eslintrc +0 -27
  373. package/node_modules/set-function-length/.github/FUNDING.yml +0 -12
  374. package/node_modules/set-function-length/.nycrc +0 -13
  375. package/node_modules/set-function-length/CHANGELOG.md +0 -70
  376. package/node_modules/set-function-length/LICENSE +0 -21
  377. package/node_modules/set-function-length/README.md +0 -56
  378. package/node_modules/set-function-length/env.d.ts +0 -9
  379. package/node_modules/set-function-length/env.js +0 -25
  380. package/node_modules/set-function-length/index.d.ts +0 -7
  381. package/node_modules/set-function-length/index.js +0 -42
  382. package/node_modules/set-function-length/package.json +0 -102
  383. package/node_modules/set-function-length/tsconfig.json +0 -9
@@ -161,5 +161,5 @@ Refer to the following page for more information: https://cdktn.io/docs/examples
161
161
  }
162
162
  exports.MigrateIds = MigrateIds;
163
163
  _a = JSII_RTTI_SYMBOL_1;
164
- MigrateIds[_a] = { fqn: "cdktn.MigrateIds", version: "0.23.2" };
164
+ MigrateIds[_a] = { fqn: "cdktn.MigrateIds", version: "0.23.4" };
165
165
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBncmFkZS1pZC1hc3BlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXBncmFkZS1pZC1hc3BlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBRW5DLHdCQU9XO0FBR1gsaUNBQWlDO0FBQ2pDLHFDQUErRDtBQUMvRCw2QkFBNkI7QUFFN0I7OztHQUdHO0FBRUg7Ozs7O0dBS0c7QUFDSCxNQUFNLG9CQUFvQixHQUFHLFVBQVUsQ0FBQztBQUV4Qzs7R0FFRztBQUNILE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUU1QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUM7QUFDckIsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBRXZCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNuQixNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsQ0FBQyxvQkFBb0I7QUFDL0MsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBRXZCOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxVQUFvQixFQUFFLGFBQXNCO0lBQzFFLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUM7SUFFdkQsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBQSw0Q0FBbUMsR0FBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCwyRUFBMkU7SUFDM0UsMkVBQTJFO0lBQzNFLGdDQUFnQztJQUNoQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUIscUVBQXFFO1FBQ3JFLHlFQUF5RTtRQUN6RSx3RUFBd0U7UUFDeEUscUVBQXFFO1FBQ3JFLDZDQUE2QztRQUM3QyxNQUFNLFNBQVMsR0FBRywwQkFBMEIsQ0FBQyxVQUFVLENBQUMsQ0FB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dCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuXG5pbXBvcnQge1xuICBBbm5vdGF0aW9ucyxcbiAgQXBwLFxuICBUZXJyYWZvcm1FbGVtZW50LFxuICBUZXJyYWZvcm1Nb2R1bGUsXG4gIFRlcnJhZm9ybVJlc291cmNlLFxuICBUZXJyYWZvcm1TdGFjayxcbn0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IElBc3BlY3QgfSBmcm9tIFwiLi9hc3BlY3RcIjtcbmltcG9ydCB7IElDb25zdHJ1Y3QsIE5vZGUgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCB7IGNhbm5vdENhbGNJZEZvckVtcHR5U2V0T2ZDb21wb25lbnRzIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbi8qKlxuICogV2UgaGF2ZSB0byBjb3B5IHRoaXMgZnJvbSB0aGUgb2xkIENES1ROIHZlcnNpb24gZm9yIG5vdywgc28gdGhhdCB3ZSBjYW5cbiAqIGNhbGN1bGF0ZSB0aGUgb2xkIGxvZ2ljYWwgSURzIGZvciBub3cgYW5kIGZvciBsYXRlciBmb3IgdGhlIG1pZ3JhdGlvbi5cbiAqL1xuXG4vKipcbiAqIFJlc291cmNlcyB3aXRoIHRoaXMgSUQgYXJlIGhpZGRlbiBmcm9tIGh1bWFuc1xuICpcbiAqIFRoZXkgZG8gbm90IGFwcGVhciBpbiB0aGUgaHVtYW4tcmVhZGFibGUgcGFydCBvZiB0aGUgbG9naWNhbCBJRCxcbiAqIGJ1dCB0aGV5IGFyZSBpbmNsdWRlZCBpbiB0aGUgaGFzaCBjYWxjdWxhdGlvbi5cbiAqL1xuY29uc3QgSElEREVOX0ZST01fSFVNQU5fSUQgPSBcIlJlc291cmNlXCI7XG5cbi8qKlxuICogUmVzb3VyY2VzIHdpdGggdGhpcyBJRCBhcmUgY29tcGxldGUgaGlkZGVuIGZyb20gdGhlIGxvZ2ljYWwgSUQgY2FsY3VsYXRpb24uXG4gKi9cbmNvbnN0IEhJRERFTl9JRCA9IFwiRGVmYXVsdFwiO1xuXG5jb25zdCBQQVRIX1NFUCA9IFwiL1wiO1xuY29uc3QgVU5JUVVFX1NFUCA9IFwiX1wiO1xuXG5jb25zdCBIQVNIX0xFTiA9IDg7XG5jb25zdCBNQVhfSFVNQU5fTEVOID0gMjQwOyAvLyBtYXggSUQgbGVuIGlzIDI1NVxuY29uc3QgTUFYX0lEX0xFTiA9IDI1NTtcblxuLyoqXG4gKiBDYWxjdWxhdGVzIGEgdW5pcXVlIElEIGZvciBhIHNldCBvZiB0ZXh0dWFsIGNvbXBvbmVudHMuXG4gKlxuICogVGhpcyBpcyBkb25lIGJ5IGNhbGN1bGF0aW5nIGEgaGFzaCBvbiB0aGUgZnVsbCBwYXRoIGFuZCB1c2luZyBpdCBhcyBhIHN1ZmZpeFxuICogb2YgYSBsZW5ndGgtbGltaXRlZCBcImh1bWFuXCIgcmVuZGl0aW9uIG9mIHRoZSBwYXRoIGNvbXBvbmVudHMuXG4gKlxuICogQHBhcmFtIGNvbXBvbmVudHMgVGhlIHBhdGggY29tcG9uZW50c1xuICogQHJldHVybnMgYSB1bmlxdWUgYWxwaGEtbnVtZXJpYyBpZGVudGlmaWVyIHdpdGggYSBtYXhpbXVtIGxlbmd0aCBvZiAyNTVcbiAqL1xuZnVuY3Rpb24gbWFrZVVuaXF1ZUlkT2xkVmVyc2lvbihjb21wb25lbnRzOiBzdHJpbmdbXSwgYWxsb3dTZXBDaGFyczogYm9vbGVhbikge1xuICBjb21wb25lbnRzID0gY29tcG9uZW50cy5maWx0ZXIoKHgpID0+IHggIT09IEhJRERFTl9JRCk7XG5cbiAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgY2Fubm90Q2FsY0lkRm9yRW1wdHlTZXRPZkNvbXBvbmVudHMoKTtcbiAgfVxuXG4gIC8vIHRvcC1sZXZlbCByZXNvdXJjZXMgd2lsbCBzaW1wbHkgdXNlIHRoZSBgbmFtZWAgYXMtaXMgaW4gb3JkZXIgdG8gc3VwcG9ydFxuICAvLyB0cmFuc3BhcmVudCBtaWdyYXRpb24gb2YgY2xvdWRmb3JtYXRpb24gdGVtcGxhdGVzIHRvIHRoZSBDREsgd2l0aG91dCB0aGVcbiAgLy8gbmVlZCB0byByZW5hbWUgYWxsIHJlc291cmNlcy5cbiAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgLy8gd2UgZmlsdGVyIG91dCBub24tYWxwaGEgY2hhcmFjdGVycyBidXQgdGhhdCBpcyBhY3R1YWxseSBhIGJhZCBpZGVhXG4gICAgLy8gYmVjYXVzZSBpdCBjb3VsZCBjcmVhdGUgY29uZmxpY3RzIChcIkEtQlwiIGFuZCBcIkFCXCIgd2lsbCByZW5kZXIgdGhlIHNhbWVcbiAgICAvLyBsb2dpY2FsIElEKS4gc2FkbHksIGNoYW5naW5nIGl0IGluIHRoZSAxLnggdmVyc2lvbiBsaW5lIGlzIGltcG9zc2libGVcbiAgICAvLyBiZWNhdXNlIGl0IHdpbGwgYmUgYSBicmVha2luZyBjaGFuZ2UuIHdlIHNob3VsZCBjb25zaWRlciBmb3IgdjIuMC5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzY0MjFcbiAgICBjb25zdCBjYW5kaWRhdGUgPSByZW1vdmVEaXNhbGxvd2VkQ2hhcmFjdGVycyhjb21wb25lbnRzWzBdLCBhbGxvd1NlcENoYXJzKTtcblxuICAgIC8vIGlmIG91ciBjYW5kaWRhdGUgaXMgc2hvcnQgZW5vdWdoLCB1c2UgaXQgYXMgaXMuIG90aGVyd2lzZSwgZmFsbCBiYWNrIHRvXG4gICAgLy8gdGhlIG5vcm1hbCBtb2RlLlxuICAgIGlmIChjYW5kaWRhdGUubGVuZ3RoIDw9IE1BWF9JRF9MRU4pIHtcbiAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFzaCA9IHBhdGhIYXNoKGNvbXBvbmVudHMpO1xuICBjb25zdCBodW1hbiA9IHJlbW92ZUR1cGVzKGNvbXBvbmVudHMpXG4gICAgLmZpbHRlcigoeCkgPT4geCAhPT0gSElEREVOX0ZST01fSFVNQU5fSUQpXG4gICAgLm1hcCgocykgPT4gcmVtb3ZlRGlzYWxsb3dlZENoYXJhY3RlcnMocywgYWxsb3dTZXBDaGFycykpXG4gICAgLmpvaW4oVU5JUVVFX1NFUClcbiAgICAuc2xpY2UoMCwgTUFYX0hVTUFOX0xFTik7XG5cbiAgcmV0dXJuIGh1bWFuICsgVU5JUVVFX1NFUCArIGhhc2g7XG59XG5cbi8qKlxuICogVGFrZSBhIGhhc2ggb2YgdGhlIGdpdmVuIHBhdGguXG4gKlxuICogVGhlIGhhc2ggaXMgbGltaXRlZCBpbiBzaXplLlxuICovXG5mdW5jdGlvbiBwYXRoSGFzaChwYXRoOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGNvbnN0IG1kNSA9IGNyeXB0b1xuICAgIC5jcmVhdGVIYXNoKFwibWQ1XCIpXG4gICAgLnVwZGF0ZShwYXRoLmpvaW4oUEFUSF9TRVApKVxuICAgIC5kaWdlc3QoXCJoZXhcIik7XG4gIHJldHVybiBtZDUuc2xpY2UoMCwgSEFTSF9MRU4pLnRvVXBwZXJDYXNlKCk7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBzXG4gKiBAcGFyYW0gYWxsb3dTZXBDaGFyc1xuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gcmVtb3ZlRGlzYWxsb3dlZENoYXJhY3RlcnMoczogc3RyaW5nLCBhbGxvd1NlcENoYXJzOiBib29sZWFuKSB7XG4gIGlmIChhbGxvd1NlcENoYXJzKSB7XG4gICAgcmV0dXJuIHJlbW92ZU5vbkFscGhhbnVtZXJpY1NlcChzKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVtb3ZlTm9uQWxwaGFudW1lcmljKHMpO1xuICB9XG59XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLlxuICovXG5mdW5jdGlvbiByZW1vdmVOb25BbHBoYW51bWVyaWMoczogc3RyaW5nKSB7XG4gIHJldHVybiBzLnJlcGxhY2UoL1teQS1aYS16MC05XS9nLCBcIlwiKTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHNcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIHJlbW92ZU5vbkFscGhhbnVtZXJpY1NlcChzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHMucmVwbGFjZSgvW15BLVphLXowLTlfLV0vZywgXCJcIik7XG59XG5cbi8qKlxuICogUmVtb3ZlIGR1cGxpY2F0ZSBcInRlcm1zXCIgZnJvbSB0aGUgcGF0aCBsaXN0XG4gKlxuICogSWYgdGhlIHByZXZpb3VzIHBhdGggY29tcG9uZW50IG5hbWUgZW5kcyB3aXRoIHRoaXMgY29tcG9uZW50IG5hbWUsIHNraXAgdGhlXG4gKiBjdXJyZW50IGNvbXBvbmVudC5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlRHVwZXMocGF0aDogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG5cbiAgZm9yIChjb25zdCBjb21wb25lbnQgb2YgcGF0aCkge1xuICAgIGlmIChyZXQubGVuZ3RoID09PSAwIHx8ICFyZXRbcmV0Lmxlbmd0aCAtIDFdLmVuZHNXaXRoKGNvbXBvbmVudCkpIHtcbiAgICAgIHJldC5wdXNoKGNvbXBvbmVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHRmRWxlbWVudFxuICogQHJldHVybnNcbiAqL1xuZnVuY3Rpb24gYWxsb2NhdGVMb2dpY2FsSWRPbGRWZXJzaW9uKFxuICB0ZkVsZW1lbnQ6IFRlcnJhZm9ybUVsZW1lbnQgfCBOb2RlLFxuKTogc3RyaW5nIHtcbiAgY29uc3Qgbm9kZSA9IFRlcnJhZm9ybUVsZW1lbnQuaXNUZXJyYWZvcm1FbGVtZW50KHRmRWxlbWVudClcbiAgICA/IHRmRWxlbWVudC5ub2RlXG4gICAgOiB0ZkVsZW1lbnQ7XG5cbiAgLy8gVGhpcyBpcyB0aGUgcHJldmlvdXMgYmVoYXZpb3IsIHdoaWNoIHdlIHdhbnQgZm9yIG5vdy5cbiAgY29uc3Qgc3RhY2tJbmRleCA9IDA7XG5cbiAgY29uc3QgY29tcG9uZW50cyA9IG5vZGUuc2NvcGVzLnNsaWNlKHN0YWNrSW5kZXggKyAxKS5tYXAoKGMpID0+IGMubm9kZS5pZCk7XG4gIHJldHVybiBjb21wb25lbnRzLmxlbmd0aCA+IDAgPyBtYWtlVW5pcXVlSWRPbGRWZXJzaW9uKGNvbXBvbmVudHMsIGZhbHNlKSA6IFwiXCI7XG59XG5cbi8qKlxuICogRm9yIG1pZ3JhdGluZyBwYXN0IDAuMTcgd2hlcmUgdGhlIGZlYXR1cmUgZmxhZyBmb3IgdGhlIG9sZCBpZCBnZW5lcmF0aW9uIGxvZ2ljIHdhcyByZW1vdmVkIGFmdGVyIGJlaW5nIGRlcHJlY2F0ZWQgc2luY2UgMC4xNVxuICovXG5leHBvcnQgY2xhc3MgTWlncmF0ZUlkcyBpbXBsZW1lbnRzIElBc3BlY3Qge1xuICB2aXNpdChub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWluc3RhbmNlb2Yvbm8taW5zdGFuY2VvZlxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgVGVycmFmb3JtUmVzb3VyY2UpIHtcbiAgICAgIGNvbnN0IG9sZElkID0gYWxsb2NhdGVMb2dpY2FsSWRPbGRWZXJzaW9uKG5vZGUpO1xuICAgICAgbm9kZS5tb3ZlRnJvbUlkKGAke25vZGUudGVycmFmb3JtUmVzb3VyY2VUeXBlfS4ke29sZElkfWApO1xuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8taW5zdGFuY2VvZi9uby1pbnN0YW5jZW9mXG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBUZXJyYWZvcm1Nb2R1bGUpIHtcbiAgICAgIGNvbnN0IG9sZElkID0gYWxsb2NhdGVMb2dpY2FsSWRPbGRWZXJzaW9uKG5vZGUpO1xuICAgICAgY29uc3QgYXBwTWFuaWZlc3QgPSBBcHAub2Yobm9kZSkubWFuaWZlc3Q7XG4gICAgICBjb25zdCBzdGFja01hbmlmZXN0ID0gYXBwTWFuaWZlc3QuZm9yU3RhY2soVGVycmFmb3JtU3RhY2sub2Yobm9kZSkpO1xuICAgICAgY29uc3Qgc3RhY2tPdXRkaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGFwcE1hbmlmZXN0Lm91dGRpcixcbiAgICAgICAgc3RhY2tNYW5pZmVzdC53b3JraW5nRGlyZWN0b3J5LFxuICAgICAgKTtcbiAgICAgIEFubm90YXRpb25zLm9mKG5vZGUpXG4gICAgICAgIC5hZGRXYXJuaW5nKGBGb3VuZCBtb2R1bGUgd2l0aCBuZXcgaWQgJHtub2RlLmZyaWVuZGx5VW5pcXVlSWR9LiBNb3ZpbmcgdGhpcyBtb2R1bGUgcmVxdWlyZXMgYSBtYW51YWwgc3RhdGUgbWlncmF0aW9uLlxuSWYgdGhpcyBtb2R1bGUgaGFzIG5vdCBiZWVuIG1vdmVkIHlldCwgcnVuIFwidGVycmFmb3JtIHN0YXRlIG12IG1vZHVsZS4ke29sZElkfSBtb2R1bGUuJHtub2RlLmZyaWVuZGx5VW5pcXVlSWR9XCIgaW4gdGhlIG91dHB1dCBkaXJlY3RvcnkgXCIke3N0YWNrT3V0ZGlyfVwiIHRvIG1pZ3JhdGUgdGhlIGV4aXN0aW5nIHN0YXRlIHRvIGl0cyBuZXcgaWQuXG5SZWZlciB0byB0aGUgZm9sbG93aW5nIHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb246IGh0dHBzOi8vY2RrdG4uaW8vZG9jcy9leGFtcGxlcy1hbmQtZ3VpZGVzL3JlZmFjdG9yaW5nI21vdmluZy1vci1yZW5hbWluZy1tb2R1bGVzYCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,2 +1,5 @@
1
+ export * from "./target-versions";
1
2
  export * from "./validate-binary-version";
3
+ export * from "./validate-function-version-support";
2
4
  export * from "./validate-provider-presence";
5
+ export * from "./validate-terraform-feature-version";
@@ -16,6 +16,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  // Copyright (c) HashiCorp, Inc
18
18
  // SPDX-License-Identifier: MPL-2.0
19
+ __exportStar(require("./target-versions"), exports);
19
20
  __exportStar(require("./validate-binary-version"), exports);
21
+ __exportStar(require("./validate-function-version-support"), exports);
20
22
  __exportStar(require("./validate-provider-presence"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsNERBQTBDO0FBQzFDLCtEQUE2QyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0ZS1iaW5hcnktdmVyc2lvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdmFsaWRhdGUtcHJvdmlkZXItcHJlc2VuY2VcIjtcbiJdfQ==
23
+ __exportStar(require("./validate-terraform-feature-version"), exports);
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsb0RBQWtDO0FBQ2xDLDREQUEwQztBQUMxQyxzRUFBb0Q7QUFDcEQsK0RBQTZDO0FBQzdDLHVFQUFxRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5leHBvcnQgKiBmcm9tIFwiLi90YXJnZXQtdmVyc2lvbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRlLWJpbmFyeS12ZXJzaW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0ZS1mdW5jdGlvbi12ZXJzaW9uLXN1cHBvcnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRlLXByb3ZpZGVyLXByZXNlbmNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi92YWxpZGF0ZS10ZXJyYWZvcm0tZmVhdHVyZS12ZXJzaW9uXCI7XG4iXX0=
@@ -0,0 +1,71 @@
1
+ import { IConstruct, IValidation } from "constructs";
2
+ import { TerraformFeatureVersionConstraints } from "./validate-terraform-feature-version";
3
+ /**
4
+ * Context key carrying the project's declared Terraform-compatible runtime
5
+ * targets (set from the `targetVersions` field in cdktf.json by the CLI, or
6
+ * directly via App context / CDKTF_CONTEXT_JSON for standalone synth).
7
+ *
8
+ * This is the canonical definition. `@cdktn/commons` imports it from here
9
+ * (commons depends on cdktn; cdktn must not depend on commons), so the CLI
10
+ * writes and the construct library reads the exact same key. It is an
11
+ * internal wiring detail, deliberately not part of cdktn's public API.
12
+ */
13
+ export declare const TARGET_VERSIONS_CONTEXT_KEY = "targetVersions";
14
+ /**
15
+ * The Terraform-compatible runtimes a project declares it supports, as npm
16
+ * semver ranges per product. A missing product means the project does not
17
+ * target that product.
18
+ */
19
+ export interface TerraformTargetVersions {
20
+ readonly terraform?: string;
21
+ readonly opentofu?: string;
22
+ }
23
+ /**
24
+ * Used when a project declares no `targetVersions`: the project is assumed
25
+ * to target every supported release of both products, which is the strictest
26
+ * (most portable) interpretation.
27
+ */
28
+ export declare const DEFAULT_TARGET_VERSIONS: TerraformTargetVersions;
29
+ /**
30
+ * The product keys a project may declare targets for. Exported for reuse by
31
+ * `@cdktn/commons` (imported via subpath), not part of cdktn's public API.
32
+ */
33
+ export declare const TARGET_PRODUCTS: readonly ["terraform", "opentofu"];
34
+ /**
35
+ * Resolves the declared target versions from construct context, falling back
36
+ * to DEFAULT_TARGET_VERSIONS. Returns errors instead of targets when the
37
+ * declared value is malformed (which can happen when context is set directly
38
+ * on the App rather than going through cdktf.json validation).
39
+ */
40
+ export declare function resolveTargetVersions(scope: IConstruct): {
41
+ targets?: TerraformTargetVersions;
42
+ errors: string[];
43
+ };
44
+ /**
45
+ * Checks whether a feature is supported across the entire declared target
46
+ * range of every targeted product.
47
+ *
48
+ * `supportedIn` follows the TerraformFeatureVersionConstraints semantics: a
49
+ * missing product key means the feature is not supported by that product at
50
+ * any version. The check is a semver range subset: declaring
51
+ * `terraform: ">=1.5.7"` while a feature requires `>=1.8.0` fails, because
52
+ * the project claims to support 1.5.7..1.8.0 where the feature is missing.
53
+ */
54
+ export declare function checkFeatureSupportedByTargets(featureName: string, supportedIn: TerraformFeatureVersionConstraints, targets: TerraformTargetVersions, hint?: string): string[];
55
+ /**
56
+ * Validates that a feature is supported by the project's declared
57
+ * Terraform-compatible runtime targets (cdktf.json `targetVersions`),
58
+ * without probing any locally installed binary.
59
+ *
60
+ * Verifying the actually installed binary is a separate, explicit step:
61
+ * the opt-in `validateInstalledBinary` config handled by the CLI commands
62
+ * that execute the binary.
63
+ */
64
+ export declare class ValidateFeatureTargetSupport implements IValidation {
65
+ protected scope: IConstruct;
66
+ protected featureName: string;
67
+ protected supportedIn: TerraformFeatureVersionConstraints;
68
+ protected hint?: string | undefined;
69
+ constructor(scope: IConstruct, featureName: string, supportedIn: TerraformFeatureVersionConstraints, hint?: string | undefined);
70
+ validate(): string[];
71
+ }
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidateFeatureTargetSupport = exports.TARGET_PRODUCTS = exports.DEFAULT_TARGET_VERSIONS = exports.TARGET_VERSIONS_CONTEXT_KEY = void 0;
4
+ exports.resolveTargetVersions = resolveTargetVersions;
5
+ exports.checkFeatureSupportedByTargets = checkFeatureSupportedByTargets;
6
+ const semver = require("semver");
7
+ /**
8
+ * Context key carrying the project's declared Terraform-compatible runtime
9
+ * targets (set from the `targetVersions` field in cdktf.json by the CLI, or
10
+ * directly via App context / CDKTF_CONTEXT_JSON for standalone synth).
11
+ *
12
+ * This is the canonical definition. `@cdktn/commons` imports it from here
13
+ * (commons depends on cdktn; cdktn must not depend on commons), so the CLI
14
+ * writes and the construct library reads the exact same key. It is an
15
+ * internal wiring detail, deliberately not part of cdktn's public API.
16
+ */
17
+ exports.TARGET_VERSIONS_CONTEXT_KEY = "targetVersions";
18
+ /**
19
+ * Used when a project declares no `targetVersions`: the project is assumed
20
+ * to target every supported release of both products, which is the strictest
21
+ * (most portable) interpretation.
22
+ */
23
+ exports.DEFAULT_TARGET_VERSIONS = {
24
+ terraform: ">=1.5.7",
25
+ opentofu: ">=1.6.0",
26
+ };
27
+ /**
28
+ * The product keys a project may declare targets for. Exported for reuse by
29
+ * `@cdktn/commons` (imported via subpath), not part of cdktn's public API.
30
+ */
31
+ exports.TARGET_PRODUCTS = ["terraform", "opentofu"];
32
+ /**
33
+ * Resolves the declared target versions from construct context, falling back
34
+ * to DEFAULT_TARGET_VERSIONS. Returns errors instead of targets when the
35
+ * declared value is malformed (which can happen when context is set directly
36
+ * on the App rather than going through cdktf.json validation).
37
+ */
38
+ function resolveTargetVersions(scope) {
39
+ const declared = scope.node.tryGetContext(exports.TARGET_VERSIONS_CONTEXT_KEY);
40
+ if (declared === undefined) {
41
+ return { targets: exports.DEFAULT_TARGET_VERSIONS, errors: [] };
42
+ }
43
+ if (typeof declared !== "object" ||
44
+ declared === null ||
45
+ Array.isArray(declared)) {
46
+ return {
47
+ errors: [
48
+ `targetVersions context must be an object mapping products to semver ranges, e.g. { "terraform": ">=1.5.7" }`,
49
+ ],
50
+ };
51
+ }
52
+ const entries = Object.entries(declared);
53
+ if (entries.length === 0) {
54
+ return {
55
+ errors: [
56
+ `targetVersions must declare at least one product ("terraform" or "opentofu") or be omitted entirely`,
57
+ ],
58
+ };
59
+ }
60
+ const errors = [];
61
+ for (const [product, range] of entries) {
62
+ if (!exports.TARGET_PRODUCTS.includes(product)) {
63
+ errors.push(`targetVersions has unknown product "${product}" (expected "terraform" or "opentofu")`);
64
+ }
65
+ else if (typeof range === "string" && range.includes("~>")) {
66
+ // npm semver happens to parse "~>" as "~", which has different
67
+ // semantics than Terraform's "~>" pessimistic constraint — reject it
68
+ // instead of silently meaning something else
69
+ errors.push(`targetVersions.${product} "${range}" uses Terraform provider constraint syntax; use npm semver ranges instead (e.g. ">=1.5.7" or "~1.5.7")`);
70
+ }
71
+ else if (typeof range !== "string" || semver.validRange(range) === null) {
72
+ errors.push(`targetVersions.${product} ${JSON.stringify(range)} is not a valid semver range`);
73
+ }
74
+ }
75
+ if (errors.length > 0) {
76
+ return { errors };
77
+ }
78
+ return { targets: declared, errors: [] };
79
+ }
80
+ /**
81
+ * Checks whether a feature is supported across the entire declared target
82
+ * range of every targeted product.
83
+ *
84
+ * `supportedIn` follows the TerraformFeatureVersionConstraints semantics: a
85
+ * missing product key means the feature is not supported by that product at
86
+ * any version. The check is a semver range subset: declaring
87
+ * `terraform: ">=1.5.7"` while a feature requires `>=1.8.0` fails, because
88
+ * the project claims to support 1.5.7..1.8.0 where the feature is missing.
89
+ */
90
+ function checkFeatureSupportedByTargets(featureName, supportedIn, targets, hint) {
91
+ const errors = [];
92
+ for (const product of exports.TARGET_PRODUCTS) {
93
+ const targetRange = targets[product];
94
+ if (!targetRange)
95
+ continue; // product not targeted by the project
96
+ const supportedRange = supportedIn[product];
97
+ if (!supportedRange) {
98
+ errors.push(`${featureName} is not supported by ${product}, but the project targets ${product} ${targetRange}. ${hint || ""}`.trimEnd());
99
+ continue;
100
+ }
101
+ if (!semver.subset(targetRange, supportedRange)) {
102
+ errors.push(`${featureName} requires ${product} ${supportedRange}, but the project targets ${product} ${targetRange}. ${hint || ""}`.trimEnd());
103
+ }
104
+ }
105
+ return errors;
106
+ }
107
+ /**
108
+ * Validates that a feature is supported by the project's declared
109
+ * Terraform-compatible runtime targets (cdktf.json `targetVersions`),
110
+ * without probing any locally installed binary.
111
+ *
112
+ * Verifying the actually installed binary is a separate, explicit step:
113
+ * the opt-in `validateInstalledBinary` config handled by the CLI commands
114
+ * that execute the binary.
115
+ */
116
+ class ValidateFeatureTargetSupport {
117
+ constructor(scope, featureName, supportedIn, hint) {
118
+ this.scope = scope;
119
+ this.featureName = featureName;
120
+ this.supportedIn = supportedIn;
121
+ this.hint = hint;
122
+ }
123
+ validate() {
124
+ const { targets, errors } = resolveTargetVersions(this.scope);
125
+ if (!targets) {
126
+ return errors;
127
+ }
128
+ return checkFeatureSupportedByTargets(this.featureName, this.supportedIn, targets, this.hint);
129
+ }
130
+ }
131
+ exports.ValidateFeatureTargetSupport = ValidateFeatureTargetSupport;
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LXZlcnNpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb25zL3RhcmdldC12ZXJzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFrREEsc0RBeURDO0FBWUQsd0VBZ0NDO0FBcEpELGlDQUFpQztBQUdqQzs7Ozs7Ozs7O0dBU0c7QUFDVSxRQUFBLDJCQUEyQixHQUFHLGdCQUFnQixDQUFDO0FBWTVEOzs7O0dBSUc7QUFDVSxRQUFBLHVCQUF1QixHQUE0QjtJQUM5RCxTQUFTLEVBQUUsU0FBUztJQUNwQixRQUFRLEVBQUUsU0FBUztDQUNwQixDQUFDO0FBRUY7OztHQUdHO0FBQ1UsUUFBQSxlQUFlLEdBQUcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFFbEU7Ozs7O0dBS0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxLQUFpQjtJQUlyRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQ0FBMkIsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sRUFBRSxPQUFPLEVBQUUsK0JBQXVCLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUNFLE9BQU8sUUFBUSxLQUFLLFFBQVE7UUFDNUIsUUFBUSxLQUFLLElBQUk7UUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFDdkIsQ0FBQztRQUNELE9BQU87WUFDTCxNQUFNLEVBQUU7Z0JBQ04sNkdBQTZHO2FBQzlHO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPO1lBQ0wsTUFBTSxFQUFFO2dCQUNOLHFH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QUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELE9BQU8sOEJBQThCLENBQ25DLElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLE9BQU8sRUFDUCxJQUFJLENBQUMsSUFBSSxDQUNWLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFyQkQsb0VBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IElDb25zdHJ1Y3QsIElWYWxpZGF0aW9uIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1GZWF0dXJlVmVyc2lvbkNvbnN0cmFpbnRzIH0gZnJvbSBcIi4vdmFsaWRhdGUtdGVycmFmb3JtLWZlYXR1cmUtdmVyc2lvblwiO1xuXG4vKipcbiAqIENvbnRleHQga2V5IGNhcnJ5aW5nIHRoZSBwcm9qZWN0J3MgZGVjbGFyZWQgVGVycmFmb3JtLWNvbXBhdGlibGUgcnVudGltZVxuICogdGFyZ2V0cyAoc2V0IGZyb20gdGhlIGB0YXJnZXRWZXJzaW9uc2AgZmllbGQgaW4gY2RrdGYuanNvbiBieSB0aGUgQ0xJLCBvclxuICogZGlyZWN0bHkgdmlhIEFwcCBjb250ZXh0IC8gQ0RLVEZfQ09OVEVYVF9KU09OIGZvciBzdGFuZGFsb25lIHN5bnRoKS5cbiAqXG4gKiBUaGlzIGlzIHRoZSBjYW5vbmljYWwgZGVmaW5pdGlvbi4gYEBjZGt0bi9jb21tb25zYCBpbXBvcnRzIGl0IGZyb20gaGVyZVxuICogKGNvbW1vbnMgZGVwZW5kcyBvbiBjZGt0bjsgY2RrdG4gbXVzdCBub3QgZGVwZW5kIG9uIGNvbW1vbnMpLCBzbyB0aGUgQ0xJXG4gKiB3cml0ZXMgYW5kIHRoZSBjb25zdHJ1Y3QgbGlicmFyeSByZWFkcyB0aGUgZXhhY3Qgc2FtZSBrZXkuIEl0IGlzIGFuXG4gKiBpbnRlcm5hbCB3aXJpbmcgZGV0YWlsLCBkZWxpYmVyYXRlbHkgbm90IHBhcnQgb2YgY2RrdG4ncyBwdWJsaWMgQVBJLlxuICovXG5leHBvcnQgY29uc3QgVEFSR0VUX1ZFUlNJT05TX0NPTlRFWFRfS0VZID0gXCJ0YXJnZXRWZXJzaW9uc1wiO1xuXG4vKipcbiAqIFRoZSBUZXJyYWZvcm0tY29tcGF0aWJsZSBydW50aW1lcyBhIHByb2plY3QgZGVjbGFyZXMgaXQgc3VwcG9ydHMsIGFzIG5wbVxuICogc2VtdmVyIHJhbmdlcyBwZXIgcHJvZHVjdC4gQSBtaXNzaW5nIHByb2R1Y3QgbWVhbnMgdGhlIHByb2plY3QgZG9lcyBub3RcbiAqIHRhcmdldCB0aGF0IHByb2R1Y3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnMge1xuICByZWFkb25seSB0ZXJyYWZvcm0/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9wZW50b2Z1Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFVzZWQgd2hlbiBhIHByb2plY3QgZGVjbGFyZXMgbm8gYHRhcmdldFZlcnNpb25zYDogdGhlIHByb2plY3QgaXMgYXNzdW1lZFxuICogdG8gdGFyZ2V0IGV2ZXJ5IHN1cHBvcnRlZCByZWxlYXNlIG9mIGJvdGggcHJvZHVjdHMsIHdoaWNoIGlzIHRoZSBzdHJpY3Rlc3RcbiAqIChtb3N0IHBvcnRhYmxlKSBpbnRlcnByZXRhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEFSR0VUX1ZFUlNJT05TOiBUZXJyYWZvcm1UYXJnZXRWZXJzaW9ucyA9IHtcbiAgdGVycmFmb3JtOiBcIj49MS41LjdcIixcbiAgb3BlbnRvZnU6IFwiPj0xLjYuMFwiLFxufTtcblxuLyoqXG4gKiBUaGUgcHJvZHVjdCBrZXlzIGEgcHJvamVjdCBtYXkgZGVjbGFyZSB0YXJnZXRzIGZvci4gRXhwb3J0ZWQgZm9yIHJldXNlIGJ5XG4gKiBgQGNka3RuL2NvbW1vbnNgIChpbXBvcnRlZCB2aWEgc3VicGF0aCksIG5vdCBwYXJ0IG9mIGNka3RuJ3MgcHVibGljIEFQSS5cbiAqL1xuZXhwb3J0IGNvbnN0IFRBUkdFVF9QUk9EVUNUUyA9IFtcInRlcnJhZm9ybVwiLCBcIm9wZW50b2Z1XCJdIGFzIGNvbnN0O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBkZWNsYXJlZCB0YXJnZXQgdmVyc2lvbnMgZnJvbSBjb25zdHJ1Y3QgY29udGV4dCwgZmFsbGluZyBiYWNrXG4gKiB0byBERUZBVUxUX1RBUkdFVF9WRVJTSU9OUy4gUmV0dXJucyBlcnJvcnMgaW5zdGVhZCBvZiB0YXJnZXRzIHdoZW4gdGhlXG4gKiBkZWNsYXJlZCB2YWx1ZSBpcyBtYWxmb3JtZWQgKHdoaWNoIGNhbiBoYXBwZW4gd2hlbiBjb250ZXh0IGlzIHNldCBkaXJlY3RseVxuICogb24gdGhlIEFwcCByYXRoZXIgdGhhbiBnb2luZyB0aHJvdWdoIGNka3RmLmpzb24gdmFsaWRhdGlvbikuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlVGFyZ2V0VmVyc2lvbnMoc2NvcGU6IElDb25zdHJ1Y3QpOiB7XG4gIHRhcmdldHM/OiBUZXJyYWZvcm1UYXJnZXRWZXJzaW9ucztcbiAgZXJyb3JzOiBzdHJpbmdbXTtcbn0ge1xuICBjb25zdCBkZWNsYXJlZCA9IHNjb3BlLm5vZGUudHJ5R2V0Q29udGV4dChUQVJHRVRfVkVSU0lPTlNfQ09OVEVYVF9LRVkpO1xuICBpZiAoZGVjbGFyZWQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7IHRhcmdldHM6IERFRkFVTFRfVEFSR0VUX1ZFUlNJT05TLCBlcnJvcnM6IFtdIH07XG4gIH1cblxuICBpZiAoXG4gICAgdHlwZW9mIGRlY2xhcmVkICE9PSBcIm9iamVjdFwiIHx8XG4gICAgZGVjbGFyZWQgPT09IG51bGwgfHxcbiAgICBBcnJheS5pc0FycmF5KGRlY2xhcmVkKVxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3JzOiBbXG4gICAgICAgIGB0YXJnZXRWZXJzaW9ucyBjb250ZXh0IG11c3QgYmUgYW4gb2JqZWN0IG1hcHBpbmcgcHJvZHVjdHMgdG8gc2VtdmVyIHJhbmdlcywgZS5nLiB7IFwidGVycmFmb3JtXCI6IFwiPj0xLjUuN1wiIH1gLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKGRlY2xhcmVkKTtcbiAgaWYgKGVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yczogW1xuICAgICAgICBgdGFyZ2V0VmVyc2lvbnMgbXVzdCBkZWNsYXJlIGF0IGxlYXN0IG9uZSBwcm9kdWN0IChcInRlcnJhZm9ybVwiIG9yIFwib3BlbnRvZnVcIikgb3IgYmUgb21pdHRlZCBlbnRpcmVseWAsXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgW3Byb2R1Y3QsIHJhbmdlXSBvZiBlbnRyaWVzKSB7XG4gICAgaWYgKCFUQVJHRVRfUFJPRFVDVFMuaW5jbHVkZXMocHJvZHVjdCBhcyBhbnkpKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgYHRhcmdldFZlcnNpb25zIGhhcyB1bmtub3duIHByb2R1Y3QgXCIke3Byb2R1Y3R9XCIgKGV4cGVjdGVkIFwidGVycmFmb3JtXCIgb3IgXCJvcGVudG9mdVwiKWAsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJhbmdlID09PSBcInN0cmluZ1wiICYmIHJhbmdlLmluY2x1ZGVzKFwifj5cIikpIHtcbiAgICAgIC8vIG5wbSBzZW12ZXIgaGFwcGVucyB0byBwYXJzZSBcIn4+XCIgYXMgXCJ+XCIsIHdoaWNoIGhhcyBkaWZmZXJlbnRcbiAgICAgIC8vIHNlbWFudGljcyB0aGFuIFRlcnJhZm9ybSdzIFwifj5cIiBwZXNzaW1pc3RpYyBjb25zdHJhaW50IOKAlCByZWplY3QgaXRcbiAgICAgIC8vIGluc3RlYWQgb2Ygc2lsZW50bHkgbWVhbmluZyBzb21ldGhpbmcgZWxzZVxuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGB0YXJnZXRWZXJzaW9ucy4ke3Byb2R1Y3R9IFwiJHtyYW5nZX1cIiB1c2VzIFRlcnJhZm9ybSBwcm92aWRlciBjb25zdHJhaW50IHN5bnRheDsgdXNlIG5wbSBzZW12ZXIgcmFuZ2VzIGluc3RlYWQgKGUuZy4gXCI+PTEuNS43XCIgb3IgXCJ+MS41LjdcIilgLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByYW5nZSAhPT0gXCJzdHJpbmdcIiB8fCBzZW12ZXIudmFsaWRSYW5nZShyYW5nZSkgPT09IG51bGwpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBgdGFyZ2V0VmVyc2lvbnMuJHtwcm9kdWN0fSAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHJhbmdlLFxuICAgICAgICApfSBpcyBub3QgYSB2YWxpZCBzZW12ZXIgcmFuZ2VgLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4geyBlcnJvcnMgfTtcbiAgfVxuXG4gIHJldHVybiB7IHRhcmdldHM6IGRlY2xhcmVkIGFzIFRlcnJhZm9ybVRhcmdldFZlcnNpb25zLCBlcnJvcnM6IFtdIH07XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBhY3Jvc3MgdGhlIGVudGlyZSBkZWNsYXJlZCB0YXJnZXRcbiAqIHJhbmdlIG9mIGV2ZXJ5IHRhcmdldGVkIHByb2R1Y3QuXG4gKlxuICogYHN1cHBvcnRlZEluYCBmb2xsb3dzIHRoZSBUZXJyYWZvcm1GZWF0dXJlVmVyc2lvbkNvbnN0cmFpbnRzIHNlbWFudGljczogYVxuICogbWlzc2luZyBwcm9kdWN0IGtleSBtZWFucyB0aGUgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoYXQgcHJvZHVjdCBhdFxuICogYW55IHZlcnNpb24uIFRoZSBjaGVjayBpcyBhIHNlbXZlciByYW5nZSBzdWJzZXQ6IGRlY2xhcmluZ1xuICogYHRlcnJhZm9ybTogXCI+PTEuNS43XCJgIHdoaWxlIGEgZmVhdHVyZSByZXF1aXJlcyBgPj0xLjguMGAgZmFpbHMsIGJlY2F1c2VcbiAqIHRoZSBwcm9qZWN0IGNsYWltcyB0byBzdXBwb3J0IDEuNS43Li4xLjguMCB3aGVyZSB0aGUgZmVhdHVyZSBpcyBtaXNzaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tGZWF0dXJlU3VwcG9ydGVkQnlUYXJnZXRzKFxuICBmZWF0dXJlTmFtZTogc3RyaW5nLFxuICBzdXBwb3J0ZWRJbjogVGVycmFmb3JtRmVhdHVyZVZlcnNpb25Db25zdHJhaW50cyxcbiAgdGFyZ2V0czogVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnMsXG4gIGhpbnQ/OiBzdHJpbmcsXG4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHByb2R1Y3Qgb2YgVEFSR0VUX1BST0RVQ1RTKSB7XG4gICAgY29uc3QgdGFyZ2V0UmFuZ2UgPSB0YXJnZXRzW3Byb2R1Y3RdO1xuICAgIGlmICghdGFyZ2V0UmFuZ2UpIGNvbnRpbnVlOyAvLyBwcm9kdWN0IG5vdCB0YXJnZXRlZCBieSB0aGUgcHJvamVjdFxuXG4gICAgY29uc3Qgc3VwcG9ydGVkUmFuZ2UgPSBzdXBwb3J0ZWRJbltwcm9kdWN0XTtcbiAgICBpZiAoIXN1cHBvcnRlZFJhbmdlKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgYCR7ZmVhdHVyZU5hbWV9IGlzIG5vdCBzdXBwb3J0ZWQgYnkgJHtwcm9kdWN0fSwgYnV0IHRoZSBwcm9qZWN0IHRhcmdldHMgJHtwcm9kdWN0fSAke3RhcmdldFJhbmdlfS4gJHtcbiAgICAgICAgICBoaW50IHx8IFwiXCJcbiAgICAgICAgfWAudHJpbUVuZCgpLFxuICAgICAgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghc2VtdmVyLnN1YnNldCh0YXJnZXRSYW5nZSwgc3VwcG9ydGVkUmFuZ2UpKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgYCR7ZmVhdHVyZU5hbWV9IHJlcXVpcmVzICR7cHJvZHVjdH0gJHtzdXBwb3J0ZWRSYW5nZX0sIGJ1dCB0aGUgcHJvamVjdCB0YXJnZXRzICR7cHJvZHVjdH0gJHt0YXJnZXRSYW5nZX0uICR7XG4gICAgICAgICAgaGludCB8fCBcIlwiXG4gICAgICAgIH1gLnRyaW1FbmQoKSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVycm9ycztcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhhdCBhIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IHRoZSBwcm9qZWN0J3MgZGVjbGFyZWRcbiAqIFRlcnJhZm9ybS1jb21wYXRpYmxlIHJ1bnRpbWUgdGFyZ2V0cyAoY2RrdGYuanNvbiBgdGFyZ2V0VmVyc2lvbnNgKSxcbiAqIHdpdGhvdXQgcHJvYmluZyBhbnkgbG9jYWxseSBpbnN0YWxsZWQgYmluYXJ5LlxuICpcbiAqIFZlcmlmeWluZyB0aGUgYWN0dWFsbHkgaW5zdGFsbGVkIGJpbmFyeSBpcyBhIHNlcGFyYXRlLCBleHBsaWNpdCBzdGVwOlxuICogdGhlIG9wdC1pbiBgdmFsaWRhdGVJbnN0YWxsZWRCaW5hcnlgIGNvbmZpZyBoYW5kbGVkIGJ5IHRoZSBDTEkgY29tbWFuZHNcbiAqIHRoYXQgZXhlY3V0ZSB0aGUgYmluYXJ5LlxuICovXG5leHBvcnQgY2xhc3MgVmFsaWRhdGVGZWF0dXJlVGFyZ2V0U3VwcG9ydCBpbXBsZW1lbnRzIElWYWxpZGF0aW9uIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHNjb3BlOiBJQ29uc3RydWN0LFxuICAgIHByb3RlY3RlZCBmZWF0dXJlTmFtZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBzdXBwb3J0ZWRJbjogVGVycmFmb3JtRmVhdHVyZVZlcnNpb25Db25zdHJhaW50cyxcbiAgICBwcm90ZWN0ZWQgaGludD86IHN0cmluZyxcbiAgKSB7fVxuXG4gIHB1YmxpYyB2YWxpZGF0ZSgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgeyB0YXJnZXRzLCBlcnJvcnMgfSA9IHJlc29sdmVUYXJnZXRWZXJzaW9ucyh0aGlzLnNjb3BlKTtcbiAgICBpZiAoIXRhcmdldHMpIHtcbiAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoZWNrRmVhdHVyZVN1cHBvcnRlZEJ5VGFyZ2V0cyhcbiAgICAgIHRoaXMuZmVhdHVyZU5hbWUsXG4gICAgICB0aGlzLnN1cHBvcnRlZEluLFxuICAgICAgdGFyZ2V0cyxcbiAgICAgIHRoaXMuaGludCxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -2,6 +2,16 @@ import { IValidation } from "constructs";
2
2
  /**
3
3
  * A validation that can be applied to a construct that will error if the
4
4
  * construct is being used in an environment with a version of a binary lower than the specified version.
5
+ *
6
+ * TODO(target-versions): legacy synth-time binary probe that predates
7
+ * OpenTofu support and the declared `targetVersions` model. Existing
8
+ * consumers (e.g. ValidateTerraformVersion for resource moves) should
9
+ * migrate to ValidateFeatureTargetSupport, leaving installed-binary
10
+ * verification to the opt-in validateInstalledBinary CLI behavior. Left
11
+ * unchanged here only to keep this PR small; the migration is tracked in
12
+ * #275. Note this class is not exported from the cdktn package root, so the
13
+ * change is behavioral (synth no longer shelling out), not a symbol-level
14
+ * public-API break.
5
15
  */
6
16
  export declare class ValidateBinaryVersion implements IValidation {
7
17
  protected binary: string;
@@ -6,6 +6,16 @@ const semver = require("semver");
6
6
  /**
7
7
  * A validation that can be applied to a construct that will error if the
8
8
  * construct is being used in an environment with a version of a binary lower than the specified version.
9
+ *
10
+ * TODO(target-versions): legacy synth-time binary probe that predates
11
+ * OpenTofu support and the declared `targetVersions` model. Existing
12
+ * consumers (e.g. ValidateTerraformVersion for resource moves) should
13
+ * migrate to ValidateFeatureTargetSupport, leaving installed-binary
14
+ * verification to the opt-in validateInstalledBinary CLI behavior. Left
15
+ * unchanged here only to keep this PR small; the migration is tracked in
16
+ * #275. Note this class is not exported from the cdktn package root, so the
17
+ * change is behavioral (synth no longer shelling out), not a symbol-level
18
+ * public-API break.
9
19
  */
10
20
  class ValidateBinaryVersion {
11
21
  constructor(binary, versionConstraint, versionCommand, hint) {
@@ -41,4 +51,4 @@ class ValidateBinaryVersion {
41
51
  }
42
52
  }
43
53
  exports.ValidateBinaryVersion = ValidateBinaryVersion;
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtYmluYXJ5LXZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbnMvdmFsaWRhdGUtYmluYXJ5LXZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsaURBQXlDO0FBQ3pDLGlDQUFpQztBQUVqQzs7O0dBR0c7QUFDSCxNQUFhLHFCQUFxQjtJQUNoQyxZQUNZLE1BQWMsRUFDZCxpQkFBeUIsRUFDekIsY0FBc0IsRUFDdEIsSUFBYTtRQUhiLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7UUFDekIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBUztJQUN0QixDQUFDO0lBRUcsUUFBUTtRQUNiLElBQUksQ0FBQztZQUNILE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSx3QkFBUSxFQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3JELEtBQUssRUFBRSxNQUFNO2FBQ2QsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRWQsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDO1lBQ3BDLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2IsT0FBTztvQkFDTCxrQ0FBa0MsSUFBSSxDQUFDLE1BQU0sYUFBYSxJQUFJLENBQUMsY0FBYyxHQUFHO2lCQUNqRixDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO2dCQUMxRCxPQUFPO29CQUNMLEdBQUcsSUFBSSxDQUFDLE1BQU0sWUFDWixPQUFPLENBQUMsQ0FBQyxDQUNYLHVDQUNFLElBQUksQ0FBQyxpQkFDUCx3QkFBd0IsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUU7aUJBQzFDLENBQUM7WUFDSixDQUFDO1lBQ0QsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU87Z0JBQ0wsa0NBQWtDLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGNBQWMsWUFBWSxDQUFDLEVBQUU7YUFDckYsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF0Q0Qsc0RBc0NDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IElWYWxpZGF0aW9uIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5cbi8qKlxuICogQSB2YWxpZGF0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gYSBjb25zdHJ1Y3QgdGhhdCB3aWxsIGVycm9yIGlmIHRoZVxuICogY29uc3RydWN0IGlzIGJlaW5nIHVzZWQgaW4gYW4gZW52aXJvbm1lbnQgd2l0aCBhIHZlcnNpb24gb2YgYSBiaW5hcnkgbG93ZXIgdGhhbiB0aGUgc3BlY2lmaWVkIHZlcnNpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0ZUJpbmFyeVZlcnNpb24gaW1wbGVtZW50cyBJVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBiaW5hcnk6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgdmVyc2lvbkNvbnN0cmFpbnQ6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgdmVyc2lvbkNvbW1hbmQ6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgaGludD86IHN0cmluZyxcbiAgKSB7fVxuXG4gIHB1YmxpYyB2YWxpZGF0ZSgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmVyc2lvbk9mQ29tbWFuZCA9IGV4ZWNTeW5jKHRoaXMudmVyc2lvbkNvbW1hbmQsIHtcbiAgICAgICAgc3RkaW86IFwicGlwZVwiLFxuICAgICAgfSkudG9TdHJpbmcoKTtcblxuICAgICAgY29uc3Qgc2VtdmVyUmVnZXggPSAvXFxkK1xcLlxcZCtcXC5cXGQrLztcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB2ZXJzaW9uT2ZDb21tYW5kLm1hdGNoKHNlbXZlclJlZ2V4KTtcbiAgICAgIGlmICghdmVyc2lvbikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIGBDb3VsZCBub3QgZGV0ZXJtaW5lIHZlcnNpb24gb2YgJHt0aGlzLmJpbmFyeX0gKHJ1bm5pbmcgJHt0aGlzLnZlcnNpb25Db21tYW5kfSlgLFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNlbXZlci5zYXRpc2ZpZXModmVyc2lvblswXSwgdGhpcy52ZXJzaW9uQ29uc3RyYWludCkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBgJHt0aGlzLmJpbmFyeX0gdmVyc2lvbiAke1xuICAgICAgICAgICAgdmVyc2lvblswXVxuICAgICAgICAgIH0gaXMgbG93ZXIgdGhhbiB0aGUgcmVxdWlyZWQgdmVyc2lvbiAke1xuICAgICAgICAgICAgdGhpcy52ZXJzaW9uQ29uc3RyYWludFxuICAgICAgICAgIH0gZm9yIHRoaXMgY29uc3RydWN0LiAke3RoaXMuaGludCB8fCBcIlwifWAsXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgICByZXR1cm4gW107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgYENvdWxkIG5vdCBkZXRlcm1pbmUgdmVyc2lvbiBvZiAke3RoaXMuYmluYXJ5fSwgJHt0aGlzLnZlcnNpb25Db21tYW5kfSBmYWlsZWQ6ICR7ZX1gLFxuICAgICAgXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtYmluYXJ5LXZlcnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbnMvdmFsaWRhdGUtYmluYXJ5LXZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsaURBQXlDO0FBQ3pDLGlDQUFpQztBQUVqQzs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBYSxxQkFBcUI7SUFDaEMsWUFDWSxNQUFjLEVBQ2QsaUJBQXlCLEVBQ3pCLGNBQXNCLEVBQ3RCLElBQWE7UUFIYixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFRO1FBQ3RCLFNBQUksR0FBSixJQUFJLENBQVM7SUFDdEIsQ0FBQztJQUVHLFFBQVE7UUFDYixJQUFJLENBQUM7WUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUEsd0JBQVEsRUFBQyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUNyRCxLQUFLLEVBQUUsTUFBTTthQUNkLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUVkLE1BQU0sV0FBVyxHQUFHLGVBQWUsQ0FBQztZQUNwQyxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNiLE9BQU87b0JBQ0wsa0NBQWtDLElBQUksQ0FBQyxNQUFNLGFBQWEsSUFBSSxDQUFDLGNBQWMsR0FBRztpQkFDakYsQ0FBQztZQUNKLENBQUM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztnQkFDMUQsT0FBTztvQkFDTCxHQUFHLElBQUksQ0FBQyxNQUFNLFlBQ1osT0FBTyxDQUFDLENBQUMsQ0FDWCx1Q0FDRSxJQUFJLENBQUMsaUJBQ1Asd0JBQXdCLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFO2lCQUMxQyxDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPO2dCQUNMLGtDQUFrQyxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxjQUFjLFlBQVksQ0FBQyxFQUFFO2FBQ3JGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdENELHNEQXNDQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBJVmFsaWRhdGlvbiB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuXG4vKipcbiAqIEEgdmFsaWRhdGlvbiB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIGEgY29uc3RydWN0IHRoYXQgd2lsbCBlcnJvciBpZiB0aGVcbiAqIGNvbnN0cnVjdCBpcyBiZWluZyB1c2VkIGluIGFuIGVudmlyb25tZW50IHdpdGggYSB2ZXJzaW9uIG9mIGEgYmluYXJ5IGxvd2VyIHRoYW4gdGhlIHNwZWNpZmllZCB2ZXJzaW9uLlxuICpcbiAqIFRPRE8odGFyZ2V0LXZlcnNpb25zKTogbGVnYWN5IHN5bnRoLXRpbWUgYmluYXJ5IHByb2JlIHRoYXQgcHJlZGF0ZXNcbiAqIE9wZW5Ub2Z1IHN1cHBvcnQgYW5kIHRoZSBkZWNsYXJlZCBgdGFyZ2V0VmVyc2lvbnNgIG1vZGVsLiBFeGlzdGluZ1xuICogY29uc3VtZXJzIChlLmcuIFZhbGlkYXRlVGVycmFmb3JtVmVyc2lvbiBmb3IgcmVzb3VyY2UgbW92ZXMpIHNob3VsZFxuICogbWlncmF0ZSB0byBWYWxpZGF0ZUZlYXR1cmVUYXJnZXRTdXBwb3J0LCBsZWF2aW5nIGluc3RhbGxlZC1iaW5hcnlcbiAqIHZlcmlmaWNhdGlvbiB0byB0aGUgb3B0LWluIHZhbGlkYXRlSW5zdGFsbGVkQmluYXJ5IENMSSBiZWhhdmlvci4gTGVmdFxuICogdW5jaGFuZ2VkIGhlcmUgb25seSB0byBrZWVwIHRoaXMgUFIgc21hbGw7IHRoZSBtaWdyYXRpb24gaXMgdHJhY2tlZCBpblxuICogIzI3NS4gTm90ZSB0aGlzIGNsYXNzIGlzIG5vdCBleHBvcnRlZCBmcm9tIHRoZSBjZGt0biBwYWNrYWdlIHJvb3QsIHNvIHRoZVxuICogY2hhbmdlIGlzIGJlaGF2aW9yYWwgKHN5bnRoIG5vIGxvbmdlciBzaGVsbGluZyBvdXQpLCBub3QgYSBzeW1ib2wtbGV2ZWxcbiAqIHB1YmxpYy1BUEkgYnJlYWsuXG4gKi9cbmV4cG9ydCBjbGFzcyBWYWxpZGF0ZUJpbmFyeVZlcnNpb24gaW1wbGVtZW50cyBJVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBiaW5hcnk6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgdmVyc2lvbkNvbnN0cmFpbnQ6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgdmVyc2lvbkNvbW1hbmQ6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgaGludD86IHN0cmluZyxcbiAgKSB7fVxuXG4gIHB1YmxpYyB2YWxpZGF0ZSgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmVyc2lvbk9mQ29tbWFuZCA9IGV4ZWNTeW5jKHRoaXMudmVyc2lvbkNvbW1hbmQsIHtcbiAgICAgICAgc3RkaW86IFwicGlwZVwiLFxuICAgICAgfSkudG9TdHJpbmcoKTtcblxuICAgICAgY29uc3Qgc2VtdmVyUmVnZXggPSAvXFxkK1xcLlxcZCtcXC5cXGQrLztcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB2ZXJzaW9uT2ZDb21tYW5kLm1hdGNoKHNlbXZlclJlZ2V4KTtcbiAgICAgIGlmICghdmVyc2lvbikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIGBDb3VsZCBub3QgZGV0ZXJtaW5lIHZlcnNpb24gb2YgJHt0aGlzLmJpbmFyeX0gKHJ1bm5pbmcgJHt0aGlzLnZlcnNpb25Db21tYW5kfSlgLFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXNlbXZlci5zYXRpc2ZpZXModmVyc2lvblswXSwgdGhpcy52ZXJzaW9uQ29uc3RyYWludCkpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBgJHt0aGlzLmJpbmFyeX0gdmVyc2lvbiAke1xuICAgICAgICAgICAgdmVyc2lvblswXVxuICAgICAgICAgIH0gaXMgbG93ZXIgdGhhbiB0aGUgcmVxdWlyZWQgdmVyc2lvbiAke1xuICAgICAgICAgICAgdGhpcy52ZXJzaW9uQ29uc3RyYWludFxuICAgICAgICAgIH0gZm9yIHRoaXMgY29uc3RydWN0LiAke3RoaXMuaGludCB8fCBcIlwifWAsXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgICByZXR1cm4gW107XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgYENvdWxkIG5vdCBkZXRlcm1pbmUgdmVyc2lvbiBvZiAke3RoaXMuYmluYXJ5fSwgJHt0aGlzLnZlcnNpb25Db21tYW5kfSBmYWlsZWQ6ICR7ZX1gLFxuICAgICAgXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,21 @@
1
+ import { IConstruct, IValidation } from "constructs";
2
+ /**
3
+ * Validates that every Terraform function used through `Fn` is supported by
4
+ * the project's declared Terraform/OpenTofu targets (cdktf.json
5
+ * `targetVersions`, defaulting to the dual product baseline).
6
+ *
7
+ * Most functions are universally available and are not checked at all; only
8
+ * functions listed in the generated availability map are validated. The
9
+ * check is purely declarative — no binary is executed — so synth behaves
10
+ * identically in CI, package builds, and environments without Terraform or
11
+ * OpenTofu installed. Verifying the actually installed binary is the
12
+ * separate, opt-in `validateInstalledBinary` CLI behavior.
13
+ *
14
+ * Functions used via raw escape hatches (overrides, hand-written expression
15
+ * strings) are not tracked and therefore not validated.
16
+ */
17
+ export declare class ValidateFunctionVersionSupport implements IValidation {
18
+ protected scope: IConstruct;
19
+ constructor(scope: IConstruct);
20
+ validate(): string[];
21
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidateFunctionVersionSupport = void 0;
4
+ const target_versions_1 = require("./target-versions");
5
+ const function_availability_generated_1 = require("../functions/function-availability.generated");
6
+ const usage_registry_1 = require("../functions/usage-registry");
7
+ /**
8
+ * Validates that every Terraform function used through `Fn` is supported by
9
+ * the project's declared Terraform/OpenTofu targets (cdktf.json
10
+ * `targetVersions`, defaulting to the dual product baseline).
11
+ *
12
+ * Most functions are universally available and are not checked at all; only
13
+ * functions listed in the generated availability map are validated. The
14
+ * check is purely declarative — no binary is executed — so synth behaves
15
+ * identically in CI, package builds, and environments without Terraform or
16
+ * OpenTofu installed. Verifying the actually installed binary is the
17
+ * separate, opt-in `validateInstalledBinary` CLI behavior.
18
+ *
19
+ * Functions used via raw escape hatches (overrides, hand-written expression
20
+ * strings) are not tracked and therefore not validated.
21
+ */
22
+ class ValidateFunctionVersionSupport {
23
+ constructor(scope) {
24
+ this.scope = scope;
25
+ }
26
+ validate() {
27
+ const constrainedFunctions = (0, usage_registry_1.getUsedFunctions)()
28
+ .filter((name) => name in function_availability_generated_1.functionVersionConstraints)
29
+ .sort();
30
+ // only universally available functions in use: nothing to validate
31
+ if (constrainedFunctions.length === 0) {
32
+ return [];
33
+ }
34
+ const { targets, errors } = (0, target_versions_1.resolveTargetVersions)(this.scope);
35
+ if (!targets) {
36
+ return errors;
37
+ }
38
+ return constrainedFunctions.flatMap((name) => {
39
+ const supportedIn = function_availability_generated_1.functionVersionConstraints[name];
40
+ return (0, target_versions_1.checkFeatureSupportedByTargets)(`Terraform function "${name}"`, supportedIn, targets, availabilityHint(supportedIn));
41
+ });
42
+ }
43
+ }
44
+ exports.ValidateFunctionVersionSupport = ValidateFunctionVersionSupport;
45
+ /**
46
+ * Tells the user where the function IS available, so they can adjust their
47
+ * declared targetVersions (or drop the function).
48
+ */
49
+ function availabilityHint(supportedIn) {
50
+ const parts = Object.entries(supportedIn).map(([product, range]) => `${product} ${range}`);
51
+ return `It is available in ${parts.join(" and ")}.`;
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtZnVuY3Rpb24tdmVyc2lvbi1zdXBwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb25zL3ZhbGlkYXRlLWZ1bmN0aW9uLXZlcnNpb24tc3VwcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSx1REFHMkI7QUFDM0Isa0dBR3NEO0FBQ3RELGdFQUErRDtBQUUvRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQWEsOEJBQThCO0lBQ3pDLFlBQXNCLEtBQWlCO1FBQWpCLFVBQUssR0FBTCxLQUFLLENBQVk7SUFBRyxDQUFDO0lBRXBDLFFBQVE7UUFDYixNQUFNLG9CQUFvQixHQUFHLElBQUEsaUNBQWdCLEdBQUU7YUFDNUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLElBQUksNERBQTBCLENBQUM7YUFDcEQsSUFBSSxFQUFFLENBQUM7UUFFVixtRUFBbUU7UUFDbkUsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFBLHVDQUFxQixFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQyxNQUFNLFdBQVcsR0FBRyw0REFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxPQUFPLElBQUEsZ0RBQThCLEVBQ25DLHVCQUF1QixJQUFJLEdBQUcsRUFDOUIsV0FBVyxFQUNYLE9BQU8sRUFDUCxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FDOUIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBNUJELHdFQTRCQztBQUVEOzs7R0FHRztBQUNILFNBQVMsZ0JBQWdCLENBQUMsV0FBdUM7SUFDL0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQzNDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUM1QyxDQUFDO0lBQ0YsT0FBTyxzQkFBc0IsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ3RELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgSUNvbnN0cnVjdCwgSVZhbGlkYXRpb24gfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tGZWF0dXJlU3VwcG9ydGVkQnlUYXJnZXRzLFxuICByZXNvbHZlVGFyZ2V0VmVyc2lvbnMsXG59IGZyb20gXCIuL3RhcmdldC12ZXJzaW9uc1wiO1xuaW1wb3J0IHtcbiAgRnVuY3Rpb25WZXJzaW9uQ29uc3RyYWludHMsXG4gIGZ1bmN0aW9uVmVyc2lvbkNvbnN0cmFpbnRzLFxufSBmcm9tIFwiLi4vZnVuY3Rpb25zL2Z1bmN0aW9uLWF2YWlsYWJpbGl0eS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7IGdldFVzZWRGdW5jdGlvbnMgfSBmcm9tIFwiLi4vZnVuY3Rpb25zL3VzYWdlLXJlZ2lzdHJ5XCI7XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoYXQgZXZlcnkgVGVycmFmb3JtIGZ1bmN0aW9uIHVzZWQgdGhyb3VnaCBgRm5gIGlzIHN1cHBvcnRlZCBieVxuICogdGhlIHByb2plY3QncyBkZWNsYXJlZCBUZXJyYWZvcm0vT3BlblRvZnUgdGFyZ2V0cyAoY2RrdGYuanNvblxuICogYHRhcmdldFZlcnNpb25zYCwgZGVmYXVsdGluZyB0byB0aGUgZHVhbCBwcm9kdWN0IGJhc2VsaW5lKS5cbiAqXG4gKiBNb3N0IGZ1bmN0aW9ucyBhcmUgdW5pdmVyc2FsbHkgYXZhaWxhYmxlIGFuZCBhcmUgbm90IGNoZWNrZWQgYXQgYWxsOyBvbmx5XG4gKiBmdW5jdGlvbnMgbGlzdGVkIGluIHRoZSBnZW5lcmF0ZWQgYXZhaWxhYmlsaXR5IG1hcCBhcmUgdmFsaWRhdGVkLiBUaGVcbiAqIGNoZWNrIGlzIHB1cmVseSBkZWNsYXJhdGl2ZSDigJQgbm8gYmluYXJ5IGlzIGV4ZWN1dGVkIOKAlCBzbyBzeW50aCBiZWhhdmVzXG4gKiBpZGVudGljYWxseSBpbiBDSSwgcGFja2FnZSBidWlsZHMsIGFuZCBlbnZpcm9ubWVudHMgd2l0aG91dCBUZXJyYWZvcm0gb3JcbiAqIE9wZW5Ub2Z1IGluc3RhbGxlZC4gVmVyaWZ5aW5nIHRoZSBhY3R1YWxseSBpbnN0YWxsZWQgYmluYXJ5IGlzIHRoZVxuICogc2VwYXJhdGUsIG9wdC1pbiBgdmFsaWRhdGVJbnN0YWxsZWRCaW5hcnlgIENMSSBiZWhhdmlvci5cbiAqXG4gKiBGdW5jdGlvbnMgdXNlZCB2aWEgcmF3IGVzY2FwZSBoYXRjaGVzIChvdmVycmlkZXMsIGhhbmQtd3JpdHRlbiBleHByZXNzaW9uXG4gKiBzdHJpbmdzKSBhcmUgbm90IHRyYWNrZWQgYW5kIHRoZXJlZm9yZSBub3QgdmFsaWRhdGVkLlxuICovXG5leHBvcnQgY2xhc3MgVmFsaWRhdGVGdW5jdGlvblZlcnNpb25TdXBwb3J0IGltcGxlbWVudHMgSVZhbGlkYXRpb24ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgc2NvcGU6IElDb25zdHJ1Y3QpIHt9XG5cbiAgcHVibGljIHZhbGlkYXRlKCkge1xuICAgIGNvbnN0IGNvbnN0cmFpbmVkRnVuY3Rpb25zID0gZ2V0VXNlZEZ1bmN0aW9ucygpXG4gICAgICAuZmlsdGVyKChuYW1lKSA9PiBuYW1lIGluIGZ1bmN0aW9uVmVyc2lvbkNvbnN0cmFpbnRzKVxuICAgICAgLnNvcnQoKTtcblxuICAgIC8vIG9ubHkgdW5pdmVyc2FsbHkgYXZhaWxhYmxlIGZ1bmN0aW9ucyBpbiB1c2U6IG5vdGhpbmcgdG8gdmFsaWRhdGVcbiAgICBpZiAoY29uc3RyYWluZWRGdW5jdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgeyB0YXJnZXRzLCBlcnJvcnMgfSA9IHJlc29sdmVUYXJnZXRWZXJzaW9ucyh0aGlzLnNjb3BlKTtcbiAgICBpZiAoIXRhcmdldHMpIHtcbiAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnN0cmFpbmVkRnVuY3Rpb25zLmZsYXRNYXAoKG5hbWUpID0+IHtcbiAgICAgIGNvbnN0IHN1cHBvcnRlZEluID0gZnVuY3Rpb25WZXJzaW9uQ29uc3RyYWludHNbbmFtZV07XG4gICAgICByZXR1cm4gY2hlY2tGZWF0dXJlU3VwcG9ydGVkQnlUYXJnZXRzKFxuICAgICAgICBgVGVycmFmb3JtIGZ1bmN0aW9uIFwiJHtuYW1lfVwiYCxcbiAgICAgICAgc3VwcG9ydGVkSW4sXG4gICAgICAgIHRhcmdldHMsXG4gICAgICAgIGF2YWlsYWJpbGl0eUhpbnQoc3VwcG9ydGVkSW4pLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFRlbGxzIHRoZSB1c2VyIHdoZXJlIHRoZSBmdW5jdGlvbiBJUyBhdmFpbGFibGUsIHNvIHRoZXkgY2FuIGFkanVzdCB0aGVpclxuICogZGVjbGFyZWQgdGFyZ2V0VmVyc2lvbnMgKG9yIGRyb3AgdGhlIGZ1bmN0aW9uKS5cbiAqL1xuZnVuY3Rpb24gYXZhaWxhYmlsaXR5SGludChzdXBwb3J0ZWRJbjogRnVuY3Rpb25WZXJzaW9uQ29uc3RyYWludHMpOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0cyA9IE9iamVjdC5lbnRyaWVzKHN1cHBvcnRlZEluKS5tYXAoXG4gICAgKFtwcm9kdWN0LCByYW5nZV0pID0+IGAke3Byb2R1Y3R9ICR7cmFuZ2V9YCxcbiAgKTtcbiAgcmV0dXJuIGBJdCBpcyBhdmFpbGFibGUgaW4gJHtwYXJ0cy5qb2luKFwiIGFuZCBcIil9LmA7XG59XG4iXX0=
@@ -0,0 +1,34 @@
1
+ export type TerraformCliName = "terraform" | "opentofu" | "unknown";
2
+ export interface TerraformCliVersion {
3
+ readonly name: TerraformCliName;
4
+ readonly version?: string;
5
+ }
6
+ /**
7
+ * The versions at which Terraform and OpenTofu support a feature, as npm
8
+ * semver ranges. A missing product key means the feature is not supported by
9
+ * that product at any version.
10
+ *
11
+ * Features can become available in Terraform and OpenTofu at different
12
+ * versions, so the validation matrix is feature -> product -> semver range.
13
+ * Used together with the project's declared targets, see
14
+ * ValidateFeatureTargetSupport.
15
+ */
16
+ export interface TerraformFeatureVersionConstraints {
17
+ readonly terraform?: string;
18
+ readonly opentofu?: string;
19
+ }
20
+ /**
21
+ * Parses the output of `terraform version` or `tofu version`.
22
+ *
23
+ * Plain text version output is used because both Terraform and OpenTofu expose
24
+ * a Terraform-compatible `terraform_version` key in `version -json` output.
25
+ *
26
+ * Note: synth-time validations check features against the project's declared
27
+ * `targetVersions` and do not execute any binary; this parser exists for
28
+ * consumers that explicitly interact with an installed CLI (e.g. the opt-in
29
+ * validateInstalledBinary behavior in the cdktn CLI). This is the canonical
30
+ * definition; `@cdktn/commons` imports it (commons depends on cdktn). Its
31
+ * return type uses a string-literal union, so it is kept out of cdktn's
32
+ * public (jsii) API and consumed via subpath import.
33
+ */
34
+ export declare function parseTerraformCliVersion(versionOutput: string): TerraformCliVersion;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ // Copyright (c) HashiCorp, Inc
3
+ // SPDX-License-Identifier: MPL-2.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.parseTerraformCliVersion = parseTerraformCliVersion;
6
+ /**
7
+ * Parses the output of `terraform version` or `tofu version`.
8
+ *
9
+ * Plain text version output is used because both Terraform and OpenTofu expose
10
+ * a Terraform-compatible `terraform_version` key in `version -json` output.
11
+ *
12
+ * Note: synth-time validations check features against the project's declared
13
+ * `targetVersions` and do not execute any binary; this parser exists for
14
+ * consumers that explicitly interact with an installed CLI (e.g. the opt-in
15
+ * validateInstalledBinary behavior in the cdktn CLI). This is the canonical
16
+ * definition; `@cdktn/commons` imports it (commons depends on cdktn). Its
17
+ * return type uses a string-literal union, so it is kept out of cdktn's
18
+ * public (jsii) API and consumed via subpath import.
19
+ */
20
+ function parseTerraformCliVersion(versionOutput) {
21
+ const firstLine = versionOutput.trim().split(/\r?\n/)[0] || "";
22
+ const firstLineMatch = firstLine.match(/^(Terraform|OpenTofu) v(\d+\.\d+\.\d+(?:[-+][^\s]+)?)/);
23
+ if (firstLineMatch) {
24
+ return {
25
+ name: firstLineMatch[1] === "OpenTofu" ? "opentofu" : "terraform",
26
+ version: firstLineMatch[2],
27
+ };
28
+ }
29
+ return {
30
+ name: "unknown",
31
+ version: versionOutput.match(/\d+\.\d+\.\d+(?:[-+][^\s]+)?/)?.[0],
32
+ };
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtdGVycmFmb3JtLWZlYXR1cmUtdmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92YWxpZGF0aW9ucy92YWxpZGF0ZS10ZXJyYWZvcm0tZmVhdHVyZS12ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DOztBQXNDbkMsNERBbUJDO0FBakNEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxTQUFnQix3QkFBd0IsQ0FDdEMsYUFBcUI7SUFFckIsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0QsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FDcEMsdURBQXVELENBQ3hELENBQUM7SUFFRixJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ25CLE9BQU87WUFDTCxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXO1lBQ2pFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1NBQzNCLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztLQUNsRSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5cbmV4cG9ydCB0eXBlIFRlcnJhZm9ybUNsaU5hbWUgPSBcInRlcnJhZm9ybVwiIHwgXCJvcGVudG9mdVwiIHwgXCJ1bmtub3duXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtQ2xpVmVyc2lvbiB7XG4gIHJlYWRvbmx5IG5hbWU6IFRlcnJhZm9ybUNsaU5hbWU7XG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhlIHZlcnNpb25zIGF0IHdoaWNoIFRlcnJhZm9ybSBhbmQgT3BlblRvZnUgc3VwcG9ydCBhIGZlYXR1cmUsIGFzIG5wbVxuICogc2VtdmVyIHJhbmdlcy4gQSBtaXNzaW5nIHByb2R1Y3Qga2V5IG1lYW5zIHRoZSBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgYnlcbiAqIHRoYXQgcHJvZHVjdCBhdCBhbnkgdmVyc2lvbi5cbiAqXG4gKiBGZWF0dXJlcyBjYW4gYmVjb21lIGF2YWlsYWJsZSBpbiBUZXJyYWZvcm0gYW5kIE9wZW5Ub2Z1IGF0IGRpZmZlcmVudFxuICogdmVyc2lvbnMsIHNvIHRoZSB2YWxpZGF0aW9uIG1hdHJpeCBpcyBmZWF0dXJlIC0+IHByb2R1Y3QgLT4gc2VtdmVyIHJhbmdlLlxuICogVXNlZCB0b2dldGhlciB3aXRoIHRoZSBwcm9qZWN0J3MgZGVjbGFyZWQgdGFyZ2V0cywgc2VlXG4gKiBWYWxpZGF0ZUZlYXR1cmVUYXJnZXRTdXBwb3J0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybUZlYXR1cmVWZXJzaW9uQ29uc3RyYWludHMge1xuICByZWFkb25seSB0ZXJyYWZvcm0/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9wZW50b2Z1Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhcnNlcyB0aGUgb3V0cHV0IG9mIGB0ZXJyYWZvcm0gdmVyc2lvbmAgb3IgYHRvZnUgdmVyc2lvbmAuXG4gKlxuICogUGxhaW4gdGV4dCB2ZXJzaW9uIG91dHB1dCBpcyB1c2VkIGJlY2F1c2UgYm90aCBUZXJyYWZvcm0gYW5kIE9wZW5Ub2Z1IGV4cG9zZVxuICogYSBUZXJyYWZvcm0tY29tcGF0aWJsZSBgdGVycmFmb3JtX3ZlcnNpb25gIGtleSBpbiBgdmVyc2lvbiAtanNvbmAgb3V0cHV0LlxuICpcbiAqIE5vdGU6IHN5bnRoLXRpbWUgdmFsaWRhdGlvbnMgY2hlY2sgZmVhdHVyZXMgYWdhaW5zdCB0aGUgcHJvamVjdCdzIGRlY2xhcmVkXG4gKiBgdGFyZ2V0VmVyc2lvbnNgIGFuZCBkbyBub3QgZXhlY3V0ZSBhbnkgYmluYXJ5OyB0aGlzIHBhcnNlciBleGlzdHMgZm9yXG4gKiBjb25zdW1lcnMgdGhhdCBleHBsaWNpdGx5IGludGVyYWN0IHdpdGggYW4gaW5zdGFsbGVkIENMSSAoZS5nLiB0aGUgb3B0LWluXG4gKiB2YWxpZGF0ZUluc3RhbGxlZEJpbmFyeSBiZWhhdmlvciBpbiB0aGUgY2RrdG4gQ0xJKS4gVGhpcyBpcyB0aGUgY2Fub25pY2FsXG4gKiBkZWZpbml0aW9uOyBgQGNka3RuL2NvbW1vbnNgIGltcG9ydHMgaXQgKGNvbW1vbnMgZGVwZW5kcyBvbiBjZGt0bikuIEl0c1xuICogcmV0dXJuIHR5cGUgdXNlcyBhIHN0cmluZy1saXRlcmFsIHVuaW9uLCBzbyBpdCBpcyBrZXB0IG91dCBvZiBjZGt0bidzXG4gKiBwdWJsaWMgKGpzaWkpIEFQSSBhbmQgY29uc3VtZWQgdmlhIHN1YnBhdGggaW1wb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUZXJyYWZvcm1DbGlWZXJzaW9uKFxuICB2ZXJzaW9uT3V0cHV0OiBzdHJpbmcsXG4pOiBUZXJyYWZvcm1DbGlWZXJzaW9uIHtcbiAgY29uc3QgZmlyc3RMaW5lID0gdmVyc2lvbk91dHB1dC50cmltKCkuc3BsaXQoL1xccj9cXG4vKVswXSB8fCBcIlwiO1xuICBjb25zdCBmaXJzdExpbmVNYXRjaCA9IGZpcnN0TGluZS5tYXRjaChcbiAgICAvXihUZXJyYWZvcm18T3BlblRvZnUpIHYoXFxkK1xcLlxcZCtcXC5cXGQrKD86Wy0rXVteXFxzXSspPykvLFxuICApO1xuXG4gIGlmIChmaXJzdExpbmVNYXRjaCkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBmaXJzdExpbmVNYXRjaFsxXSA9PT0gXCJPcGVuVG9mdVwiID8gXCJvcGVudG9mdVwiIDogXCJ0ZXJyYWZvcm1cIixcbiAgICAgIHZlcnNpb246IGZpcnN0TGluZU1hdGNoWzJdLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwidW5rbm93blwiLFxuICAgIHZlcnNpb246IHZlcnNpb25PdXRwdXQubWF0Y2goL1xcZCtcXC5cXGQrXFwuXFxkKyg/OlstK11bXlxcc10rKT8vKT8uWzBdLFxuICB9O1xufVxuIl19
@@ -1,6 +1,6 @@
1
- MIT License
1
+ The MIT License (MIT)
2
2
 
3
- Copyright (c) 2024 Jordan Harband
3
+ Copyright (c) Ruben Bridgewater
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,4 @@
1
+ {
2
+ "type": "module",
3
+ "main": "wrapper.js"
4
+ }
@@ -0,0 +1,4 @@
1
+ import { stringify } from '../index.js'
2
+
3
+ export * from '../index.js'
4
+ export default stringify
@@ -0,0 +1,6 @@
1
+ import cjsModule from '../index.js'
2
+
3
+ export const configure = cjsModule.configure
4
+
5
+ export const stringify = cjsModule
6
+ export default cjsModule
@@ -0,0 +1,22 @@
1
+ export type Replacer = (number | string)[] | null | undefined | ((key: string, value: unknown) => string | number | boolean | null | object)
2
+
3
+ export function stringify(value: undefined | symbol | ((...args: unknown[]) => unknown), replacer?: Replacer, space?: string | number): undefined
4
+ export function stringify(value: string | number | unknown[] | null | boolean | object, replacer?: Replacer, space?: string | number): string
5
+ export function stringify(value: unknown, replacer?: ((key: string, value: unknown) => unknown) | (number | string)[] | null | undefined, space?: string | number): string | undefined
6
+
7
+ export interface StringifyOptions {
8
+ bigint?: boolean,
9
+ circularValue?: string | null | TypeErrorConstructor | ErrorConstructor,
10
+ deterministic?: boolean | ((a: string, b: string) => number),
11
+ maximumBreadth?: number,
12
+ maximumDepth?: number,
13
+ strict?: boolean,
14
+ }
15
+
16
+ export namespace stringify {
17
+ export function configure(options: StringifyOptions): typeof stringify
18
+ }
19
+
20
+ export function configure(options: StringifyOptions): typeof stringify
21
+
22
+ export default stringify