tfts 0.2.13 → 0.3.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 (426) hide show
  1. package/README.md +5 -161
  2. package/dist/cli/config.d.ts +18 -0
  3. package/dist/cli/config.d.ts.map +1 -0
  4. package/dist/cli/config.js +36 -0
  5. package/dist/cli/config.js.map +1 -0
  6. package/dist/cli/get.d.ts +8 -0
  7. package/dist/cli/get.d.ts.map +1 -0
  8. package/dist/cli/get.js +107 -0
  9. package/dist/cli/get.js.map +1 -0
  10. package/dist/cli/main.d.ts +2 -0
  11. package/dist/cli/main.d.ts.map +1 -0
  12. package/dist/cli/main.js +85 -0
  13. package/dist/cli/main.js.map +1 -0
  14. package/dist/cli/synth.d.ts +7 -0
  15. package/dist/cli/synth.d.ts.map +1 -0
  16. package/dist/cli/synth.js +35 -0
  17. package/dist/cli/synth.js.map +1 -0
  18. package/dist/codegen/fetch-schema.d.ts +9 -0
  19. package/dist/codegen/fetch-schema.d.ts.map +1 -0
  20. package/dist/codegen/fetch-schema.js +51 -0
  21. package/dist/codegen/fetch-schema.js.map +1 -0
  22. package/dist/codegen/fetch-schema.spec.d.ts +2 -0
  23. package/dist/codegen/fetch-schema.spec.d.ts.map +1 -0
  24. package/dist/codegen/fetch-schema.spec.js +63 -0
  25. package/dist/codegen/fetch-schema.spec.js.map +1 -0
  26. package/dist/codegen/generator.d.ts +8 -0
  27. package/dist/codegen/generator.d.ts.map +1 -0
  28. package/dist/codegen/generator.js +582 -0
  29. package/dist/codegen/generator.js.map +1 -0
  30. package/dist/codegen/generator.spec.d.ts.map +1 -0
  31. package/dist/codegen/generator.spec.js +387 -0
  32. package/dist/codegen/generator.spec.js.map +1 -0
  33. package/dist/codegen/index.d.ts +5 -0
  34. package/dist/codegen/index.d.ts.map +1 -0
  35. package/dist/codegen/index.js +5 -0
  36. package/dist/codegen/index.js.map +1 -0
  37. package/dist/codegen/schema.d.ts +46 -0
  38. package/dist/codegen/schema.d.ts.map +1 -0
  39. package/dist/codegen/schema.js +64 -0
  40. package/dist/codegen/schema.js.map +1 -0
  41. package/dist/codegen/type-mapper.d.ts +11 -0
  42. package/dist/codegen/type-mapper.d.ts.map +1 -0
  43. package/dist/codegen/type-mapper.js +130 -0
  44. package/dist/codegen/type-mapper.js.map +1 -0
  45. package/dist/core/synthesize.d.ts +2 -0
  46. package/dist/core/synthesize.d.ts.map +1 -0
  47. package/dist/core/synthesize.js +51 -0
  48. package/dist/core/synthesize.js.map +1 -0
  49. package/dist/core/synthesize.spec.d.ts.map +1 -0
  50. package/dist/core/synthesize.spec.js +72 -0
  51. package/dist/core/synthesize.spec.js.map +1 -0
  52. package/dist/core/terraform-json.d.ts +86 -0
  53. package/dist/core/terraform-json.d.ts.map +1 -0
  54. package/dist/core/terraform-json.js.map +1 -0
  55. package/dist/core/tokens.d.ts +46 -0
  56. package/dist/core/tokens.d.ts.map +1 -0
  57. package/dist/core/tokens.js +256 -0
  58. package/dist/core/tokens.js.map +1 -0
  59. package/dist/{src/core → core}/tokens.spec.d.ts.map +1 -1
  60. package/dist/core/tokens.spec.js +140 -0
  61. package/dist/core/tokens.spec.js.map +1 -0
  62. package/dist/core/tree.d.ts +11 -0
  63. package/dist/core/tree.d.ts.map +1 -0
  64. package/dist/core/tree.js +89 -0
  65. package/dist/core/tree.js.map +1 -0
  66. package/dist/{src/core → core}/tree.spec.d.ts.map +1 -1
  67. package/dist/core/tree.spec.js +110 -0
  68. package/dist/core/tree.spec.js.map +1 -0
  69. package/dist/core/types.d.ts +165 -0
  70. package/dist/core/types.d.ts.map +1 -0
  71. package/dist/core/types.js +2 -0
  72. package/dist/core/types.js.map +1 -0
  73. package/dist/core/validate.d.ts +5 -0
  74. package/dist/core/validate.d.ts.map +1 -0
  75. package/dist/core/validate.js +186 -0
  76. package/dist/core/validate.js.map +1 -0
  77. package/dist/core/validate.spec.d.ts.map +1 -0
  78. package/dist/core/validate.spec.js +126 -0
  79. package/dist/core/validate.spec.js.map +1 -0
  80. package/dist/facade/annotations.d.ts +17 -0
  81. package/dist/facade/annotations.d.ts.map +1 -0
  82. package/dist/facade/annotations.js +29 -0
  83. package/dist/facade/annotations.js.map +1 -0
  84. package/dist/facade/app.d.ts +51 -0
  85. package/dist/facade/app.d.ts.map +1 -0
  86. package/dist/facade/app.js +121 -0
  87. package/dist/facade/app.js.map +1 -0
  88. package/dist/facade/aspects.d.ts +13 -0
  89. package/dist/facade/aspects.d.ts.map +1 -0
  90. package/dist/facade/aspects.js +34 -0
  91. package/dist/facade/aspects.js.map +1 -0
  92. package/dist/facade/backends/cloud-backend.d.ts +34 -0
  93. package/dist/facade/backends/cloud-backend.d.ts.map +1 -0
  94. package/dist/facade/backends/cloud-backend.js +84 -0
  95. package/dist/facade/backends/cloud-backend.js.map +1 -0
  96. package/dist/facade/backends/gcs-backend.d.ts +29 -0
  97. package/dist/facade/backends/gcs-backend.d.ts.map +1 -0
  98. package/dist/facade/backends/gcs-backend.js +34 -0
  99. package/dist/facade/backends/gcs-backend.js.map +1 -0
  100. package/dist/facade/backends/index.d.ts +5 -0
  101. package/dist/facade/backends/index.d.ts.map +1 -0
  102. package/dist/facade/backends/index.js +5 -0
  103. package/dist/facade/backends/index.js.map +1 -0
  104. package/dist/facade/backends/remote-backend.d.ts +34 -0
  105. package/dist/facade/backends/remote-backend.d.ts.map +1 -0
  106. package/dist/facade/backends/remote-backend.js +50 -0
  107. package/dist/facade/backends/remote-backend.js.map +1 -0
  108. package/dist/facade/backends/s3-backend.d.ts +97 -0
  109. package/dist/facade/backends/s3-backend.d.ts.map +1 -0
  110. package/dist/facade/backends/s3-backend.js +34 -0
  111. package/dist/facade/backends/s3-backend.js.map +1 -0
  112. package/dist/facade/complex-computed-list.d.ts +117 -0
  113. package/dist/facade/complex-computed-list.d.ts.map +1 -0
  114. package/dist/facade/complex-computed-list.js +370 -0
  115. package/dist/facade/complex-computed-list.js.map +1 -0
  116. package/dist/facade/construct.d.ts +49 -0
  117. package/dist/facade/construct.d.ts.map +1 -0
  118. package/dist/facade/construct.js +129 -0
  119. package/dist/facade/construct.js.map +1 -0
  120. package/dist/facade/importable-resource.d.ts +17 -0
  121. package/dist/facade/importable-resource.d.ts.map +1 -0
  122. package/dist/facade/importable-resource.js +27 -0
  123. package/dist/facade/importable-resource.js.map +1 -0
  124. package/dist/facade/index.d.ts +27 -0
  125. package/dist/facade/index.d.ts.map +1 -0
  126. package/dist/facade/index.js +27 -0
  127. package/dist/facade/index.js.map +1 -0
  128. package/dist/facade/runtime.d.ts +16 -0
  129. package/dist/facade/runtime.d.ts.map +1 -0
  130. package/dist/facade/runtime.js +76 -0
  131. package/dist/facade/runtime.js.map +1 -0
  132. package/dist/facade/stack-registry.d.ts +13 -0
  133. package/dist/facade/stack-registry.d.ts.map +1 -0
  134. package/dist/facade/stack-registry.js +8 -0
  135. package/dist/facade/stack-registry.js.map +1 -0
  136. package/dist/facade/terraform-addressable.d.ts +9 -0
  137. package/dist/facade/terraform-addressable.d.ts.map +1 -0
  138. package/dist/facade/terraform-addressable.js +2 -0
  139. package/dist/facade/terraform-addressable.js.map +1 -0
  140. package/dist/facade/terraform-asset.d.ts +27 -0
  141. package/dist/facade/terraform-asset.d.ts.map +1 -0
  142. package/dist/facade/terraform-asset.js +118 -0
  143. package/dist/facade/terraform-asset.js.map +1 -0
  144. package/dist/facade/terraform-backend.d.ts +23 -0
  145. package/dist/facade/terraform-backend.d.ts.map +1 -0
  146. package/dist/facade/terraform-backend.js +53 -0
  147. package/dist/facade/terraform-backend.js.map +1 -0
  148. package/dist/facade/terraform-data-source.d.ts +45 -0
  149. package/dist/facade/terraform-data-source.d.ts.map +1 -0
  150. package/dist/facade/terraform-data-source.js +85 -0
  151. package/dist/facade/terraform-data-source.js.map +1 -0
  152. package/dist/facade/terraform-element.d.ts +28 -0
  153. package/dist/facade/terraform-element.d.ts.map +1 -0
  154. package/dist/facade/terraform-element.js +100 -0
  155. package/dist/facade/terraform-element.js.map +1 -0
  156. package/dist/facade/terraform-functions.d.ts +148 -0
  157. package/dist/facade/terraform-functions.d.ts.map +1 -0
  158. package/dist/facade/terraform-functions.js +615 -0
  159. package/dist/facade/terraform-functions.js.map +1 -0
  160. package/dist/facade/terraform-functions.spec.d.ts +2 -0
  161. package/dist/facade/terraform-functions.spec.d.ts.map +1 -0
  162. package/dist/facade/terraform-functions.spec.js +282 -0
  163. package/dist/facade/terraform-functions.spec.js.map +1 -0
  164. package/dist/facade/terraform-hcl-module.d.ts +18 -0
  165. package/dist/facade/terraform-hcl-module.d.ts.map +1 -0
  166. package/dist/facade/terraform-hcl-module.js +39 -0
  167. package/dist/facade/terraform-hcl-module.js.map +1 -0
  168. package/dist/facade/terraform-iterator.d.ts +39 -0
  169. package/dist/facade/terraform-iterator.d.ts.map +1 -0
  170. package/dist/facade/terraform-iterator.js +77 -0
  171. package/dist/facade/terraform-iterator.js.map +1 -0
  172. package/dist/facade/terraform-local.d.ts +18 -0
  173. package/dist/facade/terraform-local.d.ts.map +1 -0
  174. package/dist/facade/terraform-local.js +34 -0
  175. package/dist/facade/terraform-local.js.map +1 -0
  176. package/dist/facade/terraform-module.d.ts +35 -0
  177. package/dist/facade/terraform-module.d.ts.map +1 -0
  178. package/dist/facade/terraform-module.js +94 -0
  179. package/dist/facade/terraform-module.js.map +1 -0
  180. package/dist/facade/terraform-output.d.ts +20 -0
  181. package/dist/facade/terraform-output.d.ts.map +1 -0
  182. package/dist/facade/terraform-output.js +38 -0
  183. package/dist/facade/terraform-output.js.map +1 -0
  184. package/dist/facade/terraform-provider.d.ts +27 -0
  185. package/dist/facade/terraform-provider.d.ts.map +1 -0
  186. package/dist/facade/terraform-provider.js +48 -0
  187. package/dist/facade/terraform-provider.js.map +1 -0
  188. package/dist/facade/terraform-remote-state.d.ts +33 -0
  189. package/dist/facade/terraform-remote-state.d.ts.map +1 -0
  190. package/dist/facade/terraform-remote-state.js +62 -0
  191. package/dist/facade/terraform-remote-state.js.map +1 -0
  192. package/dist/facade/terraform-resource.d.ts +64 -0
  193. package/dist/facade/terraform-resource.d.ts.map +1 -0
  194. package/dist/facade/terraform-resource.js +170 -0
  195. package/dist/facade/terraform-resource.js.map +1 -0
  196. package/dist/facade/terraform-stack.d.ts +36 -0
  197. package/dist/facade/terraform-stack.d.ts.map +1 -0
  198. package/dist/facade/terraform-stack.js +161 -0
  199. package/dist/facade/terraform-stack.js.map +1 -0
  200. package/dist/facade/terraform-variable.d.ts +32 -0
  201. package/dist/facade/terraform-variable.d.ts.map +1 -0
  202. package/dist/facade/terraform-variable.js +66 -0
  203. package/dist/facade/terraform-variable.js.map +1 -0
  204. package/dist/facade/tokenization.d.ts +4 -0
  205. package/dist/facade/tokenization.d.ts.map +1 -0
  206. package/dist/facade/tokenization.js +13 -0
  207. package/dist/facade/tokenization.js.map +1 -0
  208. package/dist/facade/util.d.ts +7 -0
  209. package/dist/facade/util.d.ts.map +1 -0
  210. package/dist/facade/util.js +55 -0
  211. package/dist/facade/util.js.map +1 -0
  212. package/dist/facade/util.spec.d.ts +2 -0
  213. package/dist/facade/util.spec.d.ts.map +1 -0
  214. package/dist/facade/util.spec.js +103 -0
  215. package/dist/facade/util.spec.js.map +1 -0
  216. package/dist/index.d.ts +3 -0
  217. package/dist/index.d.ts.map +1 -0
  218. package/dist/index.js +3 -0
  219. package/dist/index.js.map +1 -0
  220. package/dist/index.spec.d.ts +2 -0
  221. package/dist/index.spec.d.ts.map +1 -0
  222. package/dist/index.spec.js +7 -0
  223. package/dist/index.spec.js.map +1 -0
  224. package/dist/integration.spec.d.ts +2 -0
  225. package/dist/integration.spec.d.ts.map +1 -0
  226. package/dist/integration.spec.js +345 -0
  227. package/dist/integration.spec.js.map +1 -0
  228. package/dist/testing/index.d.ts +40 -0
  229. package/dist/testing/index.d.ts.map +1 -0
  230. package/dist/testing/index.js +160 -0
  231. package/dist/testing/index.js.map +1 -0
  232. package/package.json +9 -7
  233. package/dist/bin/tfts.d.ts +0 -3
  234. package/dist/bin/tfts.d.ts.map +0 -1
  235. package/dist/bin/tfts.js +0 -5
  236. package/dist/bin/tfts.js.map +0 -1
  237. package/dist/src/cli/config.d.ts +0 -43
  238. package/dist/src/cli/config.d.ts.map +0 -1
  239. package/dist/src/cli/config.js +0 -63
  240. package/dist/src/cli/config.js.map +0 -1
  241. package/dist/src/cli/diff.d.ts +0 -25
  242. package/dist/src/cli/diff.d.ts.map +0 -1
  243. package/dist/src/cli/diff.js +0 -108
  244. package/dist/src/cli/diff.js.map +0 -1
  245. package/dist/src/cli/get.d.ts +0 -24
  246. package/dist/src/cli/get.d.ts.map +0 -1
  247. package/dist/src/cli/get.js +0 -86
  248. package/dist/src/cli/get.js.map +0 -1
  249. package/dist/src/cli/index.d.ts +0 -2
  250. package/dist/src/cli/index.d.ts.map +0 -1
  251. package/dist/src/cli/index.js +0 -157
  252. package/dist/src/cli/index.js.map +0 -1
  253. package/dist/src/cli/synth.d.ts +0 -32
  254. package/dist/src/cli/synth.d.ts.map +0 -1
  255. package/dist/src/cli/synth.js +0 -55
  256. package/dist/src/cli/synth.js.map +0 -1
  257. package/dist/src/codegen/__tests__/fixtures.d.ts +0 -7
  258. package/dist/src/codegen/__tests__/fixtures.d.ts.map +0 -1
  259. package/dist/src/codegen/__tests__/fixtures.js +0 -202
  260. package/dist/src/codegen/__tests__/fixtures.js.map +0 -1
  261. package/dist/src/codegen/__tests__/generator.spec.d.ts.map +0 -1
  262. package/dist/src/codegen/__tests__/generator.spec.js +0 -382
  263. package/dist/src/codegen/__tests__/generator.spec.js.map +0 -1
  264. package/dist/src/codegen/fn-generator.d.ts +0 -22
  265. package/dist/src/codegen/fn-generator.d.ts.map +0 -1
  266. package/dist/src/codegen/fn-generator.js +0 -203
  267. package/dist/src/codegen/fn-generator.js.map +0 -1
  268. package/dist/src/codegen/generator.d.ts +0 -4
  269. package/dist/src/codegen/generator.d.ts.map +0 -1
  270. package/dist/src/codegen/generator.js +0 -479
  271. package/dist/src/codegen/generator.js.map +0 -1
  272. package/dist/src/codegen/raw-schema.d.ts +0 -38
  273. package/dist/src/codegen/raw-schema.d.ts.map +0 -1
  274. package/dist/src/codegen/raw-schema.js +0 -3
  275. package/dist/src/codegen/raw-schema.js.map +0 -1
  276. package/dist/src/codegen/schema.d.ts +0 -68
  277. package/dist/src/codegen/schema.d.ts.map +0 -1
  278. package/dist/src/codegen/schema.js +0 -71
  279. package/dist/src/codegen/schema.js.map +0 -1
  280. package/dist/src/core/backend.d.ts +0 -5
  281. package/dist/src/core/backend.d.ts.map +0 -1
  282. package/dist/src/core/backend.js +0 -2
  283. package/dist/src/core/backend.js.map +0 -1
  284. package/dist/src/core/construct.d.ts +0 -42
  285. package/dist/src/core/construct.d.ts.map +0 -1
  286. package/dist/src/core/construct.js +0 -2
  287. package/dist/src/core/construct.js.map +0 -1
  288. package/dist/src/core/datasource.d.ts +0 -8
  289. package/dist/src/core/datasource.d.ts.map +0 -1
  290. package/dist/src/core/datasource.js +0 -2
  291. package/dist/src/core/datasource.js.map +0 -1
  292. package/dist/src/core/errors.d.ts +0 -29
  293. package/dist/src/core/errors.d.ts.map +0 -1
  294. package/dist/src/core/errors.js +0 -2
  295. package/dist/src/core/errors.js.map +0 -1
  296. package/dist/src/core/local.d.ts +0 -4
  297. package/dist/src/core/local.d.ts.map +0 -1
  298. package/dist/src/core/local.js +0 -2
  299. package/dist/src/core/local.js.map +0 -1
  300. package/dist/src/core/logical-id.d.ts +0 -3
  301. package/dist/src/core/logical-id.d.ts.map +0 -1
  302. package/dist/src/core/logical-id.js +0 -48
  303. package/dist/src/core/logical-id.js.map +0 -1
  304. package/dist/src/core/output.d.ts +0 -8
  305. package/dist/src/core/output.d.ts.map +0 -1
  306. package/dist/src/core/output.js +0 -2
  307. package/dist/src/core/output.js.map +0 -1
  308. package/dist/src/core/provider.d.ts +0 -7
  309. package/dist/src/core/provider.d.ts.map +0 -1
  310. package/dist/src/core/provider.js +0 -2
  311. package/dist/src/core/provider.js.map +0 -1
  312. package/dist/src/core/resource.d.ts +0 -30
  313. package/dist/src/core/resource.d.ts.map +0 -1
  314. package/dist/src/core/resource.js +0 -2
  315. package/dist/src/core/resource.js.map +0 -1
  316. package/dist/src/core/synthesize.d.ts +0 -78
  317. package/dist/src/core/synthesize.d.ts.map +0 -1
  318. package/dist/src/core/synthesize.js +0 -293
  319. package/dist/src/core/synthesize.js.map +0 -1
  320. package/dist/src/core/synthesize.spec.d.ts.map +0 -1
  321. package/dist/src/core/synthesize.spec.js +0 -506
  322. package/dist/src/core/synthesize.spec.js.map +0 -1
  323. package/dist/src/core/terraform-json.d.ts +0 -36
  324. package/dist/src/core/terraform-json.d.ts.map +0 -1
  325. package/dist/src/core/terraform-json.js.map +0 -1
  326. package/dist/src/core/tokens.d.ts +0 -62
  327. package/dist/src/core/tokens.d.ts.map +0 -1
  328. package/dist/src/core/tokens.js +0 -133
  329. package/dist/src/core/tokens.js.map +0 -1
  330. package/dist/src/core/tokens.spec.js +0 -119
  331. package/dist/src/core/tokens.spec.js.map +0 -1
  332. package/dist/src/core/tree.d.ts +0 -6
  333. package/dist/src/core/tree.d.ts.map +0 -1
  334. package/dist/src/core/tree.js +0 -52
  335. package/dist/src/core/tree.js.map +0 -1
  336. package/dist/src/core/tree.spec.js +0 -138
  337. package/dist/src/core/tree.spec.js.map +0 -1
  338. package/dist/src/core/validate.d.ts +0 -5
  339. package/dist/src/core/validate.d.ts.map +0 -1
  340. package/dist/src/core/validate.js +0 -94
  341. package/dist/src/core/validate.js.map +0 -1
  342. package/dist/src/core/validate.spec.d.ts.map +0 -1
  343. package/dist/src/core/validate.spec.js +0 -69
  344. package/dist/src/core/validate.spec.js.map +0 -1
  345. package/dist/src/core/variable.d.ts +0 -14
  346. package/dist/src/core/variable.d.ts.map +0 -1
  347. package/dist/src/core/variable.js +0 -2
  348. package/dist/src/core/variable.js.map +0 -1
  349. package/dist/src/facade/app.d.ts +0 -23
  350. package/dist/src/facade/app.d.ts.map +0 -1
  351. package/dist/src/facade/app.js +0 -55
  352. package/dist/src/facade/app.js.map +0 -1
  353. package/dist/src/facade/backends/backend.d.ts +0 -7
  354. package/dist/src/facade/backends/backend.d.ts.map +0 -1
  355. package/dist/src/facade/backends/backend.js +0 -15
  356. package/dist/src/facade/backends/backend.js.map +0 -1
  357. package/dist/src/facade/backends/gcs.d.ts +0 -18
  358. package/dist/src/facade/backends/gcs.d.ts.map +0 -1
  359. package/dist/src/facade/backends/gcs.js +0 -28
  360. package/dist/src/facade/backends/gcs.js.map +0 -1
  361. package/dist/src/facade/backends/index.d.ts +0 -6
  362. package/dist/src/facade/backends/index.d.ts.map +0 -1
  363. package/dist/src/facade/backends/index.js +0 -6
  364. package/dist/src/facade/backends/index.js.map +0 -1
  365. package/dist/src/facade/backends/local.d.ts +0 -12
  366. package/dist/src/facade/backends/local.d.ts.map +0 -1
  367. package/dist/src/facade/backends/local.js +0 -16
  368. package/dist/src/facade/backends/local.js.map +0 -1
  369. package/dist/src/facade/backends/remote.d.ts +0 -22
  370. package/dist/src/facade/backends/remote.d.ts.map +0 -1
  371. package/dist/src/facade/backends/remote.js +0 -23
  372. package/dist/src/facade/backends/remote.js.map +0 -1
  373. package/dist/src/facade/backends/s3.d.ts +0 -24
  374. package/dist/src/facade/backends/s3.d.ts.map +0 -1
  375. package/dist/src/facade/backends/s3.js +0 -39
  376. package/dist/src/facade/backends/s3.js.map +0 -1
  377. package/dist/src/facade/construct.d.ts +0 -9
  378. package/dist/src/facade/construct.d.ts.map +0 -1
  379. package/dist/src/facade/construct.js +0 -32
  380. package/dist/src/facade/construct.js.map +0 -1
  381. package/dist/src/facade/datasource.d.ts +0 -19
  382. package/dist/src/facade/datasource.d.ts.map +0 -1
  383. package/dist/src/facade/datasource.js +0 -33
  384. package/dist/src/facade/datasource.js.map +0 -1
  385. package/dist/src/facade/facade.spec.d.ts +0 -2
  386. package/dist/src/facade/facade.spec.d.ts.map +0 -1
  387. package/dist/src/facade/facade.spec.js +0 -434
  388. package/dist/src/facade/facade.spec.js.map +0 -1
  389. package/dist/src/facade/local.d.ts +0 -15
  390. package/dist/src/facade/local.d.ts.map +0 -1
  391. package/dist/src/facade/local.js +0 -27
  392. package/dist/src/facade/local.js.map +0 -1
  393. package/dist/src/facade/output.d.ts +0 -18
  394. package/dist/src/facade/output.d.ts.map +0 -1
  395. package/dist/src/facade/output.js +0 -29
  396. package/dist/src/facade/output.js.map +0 -1
  397. package/dist/src/facade/provider.d.ts +0 -13
  398. package/dist/src/facade/provider.d.ts.map +0 -1
  399. package/dist/src/facade/provider.js +0 -25
  400. package/dist/src/facade/provider.js.map +0 -1
  401. package/dist/src/facade/resource.d.ts +0 -34
  402. package/dist/src/facade/resource.d.ts.map +0 -1
  403. package/dist/src/facade/resource.js +0 -58
  404. package/dist/src/facade/resource.js.map +0 -1
  405. package/dist/src/facade/stack.d.ts +0 -11
  406. package/dist/src/facade/stack.d.ts.map +0 -1
  407. package/dist/src/facade/stack.js +0 -28
  408. package/dist/src/facade/stack.js.map +0 -1
  409. package/dist/src/facade/variable.d.ts +0 -27
  410. package/dist/src/facade/variable.d.ts.map +0 -1
  411. package/dist/src/facade/variable.js +0 -45
  412. package/dist/src/facade/variable.js.map +0 -1
  413. package/dist/src/generated/fn.d.ts +0 -599
  414. package/dist/src/generated/fn.d.ts.map +0 -1
  415. package/dist/src/generated/fn.js +0 -998
  416. package/dist/src/generated/fn.js.map +0 -1
  417. package/dist/src/index.d.ts +0 -35
  418. package/dist/src/index.d.ts.map +0 -1
  419. package/dist/src/index.js +0 -23
  420. package/dist/src/index.js.map +0 -1
  421. /package/dist/{src/codegen/__tests__ → codegen}/generator.spec.d.ts +0 -0
  422. /package/dist/{src/core → core}/synthesize.spec.d.ts +0 -0
  423. /package/dist/{src/core → core}/terraform-json.js +0 -0
  424. /package/dist/{src/core → core}/tokens.spec.d.ts +0 -0
  425. /package/dist/{src/core → core}/tree.spec.d.ts +0 -0
  426. /package/dist/{src/core → core}/validate.spec.d.ts +0 -0
@@ -0,0 +1,121 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { z } from "zod";
4
+ import { Construct } from "./construct.js";
5
+ import { getStack } from "./stack-registry.js";
6
+ import { TerraformElement } from "./terraform-element.js";
7
+ const ContextSchema = z.record(z.string(), z.unknown());
8
+ const APP_SYMBOL = Symbol.for("tfts/App");
9
+ export const CONTEXT_ENV = "CDKTF_CONTEXT_JSON";
10
+ export class App extends Construct {
11
+ outdir;
12
+ hclOutput;
13
+ targetStackId;
14
+ skipValidation;
15
+ skipBackendValidation;
16
+ manifest;
17
+ _synthesized = false;
18
+ constructor(config = {}) {
19
+ super(undefined, "");
20
+ Object.defineProperty(this, APP_SYMBOL, { value: true });
21
+ this.outdir = config.outdir ?? process.env["CDKTF_OUTDIR"] ?? "cdktf.out";
22
+ const envHclOutput = process.env["SYNTH_HCL_OUTPUT"];
23
+ this.hclOutput =
24
+ envHclOutput !== undefined ? envHclOutput === "true" : (config.hclOutput ?? false);
25
+ this.targetStackId = process.env["CDKTF_TARGET_STACK_ID"];
26
+ this.skipValidation = config.skipValidation ?? false;
27
+ this.skipBackendValidation = config.skipBackendValidation ?? false;
28
+ this.loadContext(config.context);
29
+ if (config.stackTraces === false) {
30
+ this.node.setContext("DISABLE_STACK_TRACE_IN_METADATA", true);
31
+ }
32
+ this.node.setContext("cdktfVersion", "0.0.0");
33
+ this.manifest = {
34
+ version: "0.0.0",
35
+ outdir: this.outdir,
36
+ hclOutput: this.hclOutput,
37
+ stacks: {},
38
+ };
39
+ }
40
+ static asApp(x) {
41
+ if (x instanceof App) {
42
+ return x;
43
+ }
44
+ return null;
45
+ }
46
+ static of(construct) {
47
+ let current = construct;
48
+ while (current !== undefined) {
49
+ const app = App.asApp(current);
50
+ if (app !== null) {
51
+ return app;
52
+ }
53
+ current = current._scope;
54
+ }
55
+ return null;
56
+ }
57
+ synth() {
58
+ if (this._synthesized) {
59
+ return;
60
+ }
61
+ const stacks = this.node.findAll().flatMap((c) => {
62
+ const stack = this.asStack(c);
63
+ return stack !== null ? [stack] : [];
64
+ });
65
+ for (const stack of stacks) {
66
+ stack.prepareStack();
67
+ }
68
+ for (const stack of stacks) {
69
+ stack.synthesize();
70
+ }
71
+ if (!this.skipValidation) {
72
+ const errors = [];
73
+ for (const construct of this.node.findAll()) {
74
+ errors.push(...construct.node.validate());
75
+ }
76
+ if (errors.length > 0) {
77
+ return;
78
+ }
79
+ }
80
+ this.writeManifest();
81
+ this._synthesized = true;
82
+ }
83
+ asStack(c) {
84
+ if (!(c instanceof TerraformElement)) {
85
+ return null;
86
+ }
87
+ if (c.kind !== "stack") {
88
+ return null;
89
+ }
90
+ const stack = getStack(c);
91
+ return stack !== undefined ? stack : null;
92
+ }
93
+ loadContext(defaults = {}) {
94
+ for (const [k, v] of Object.entries(defaults)) {
95
+ this.node.setContext(k, v);
96
+ }
97
+ const contextJson = process.env[CONTEXT_ENV];
98
+ if (contextJson !== undefined && contextJson !== "") {
99
+ const parsed = ContextSchema.safeParse(JSON.parse(contextJson));
100
+ if (parsed.success) {
101
+ for (const [k, v] of Object.entries(parsed.data)) {
102
+ this.node.setContext(k, v);
103
+ }
104
+ }
105
+ }
106
+ }
107
+ writeManifest() {
108
+ if (!existsSync(this.outdir)) {
109
+ mkdirSync(this.outdir, { recursive: true });
110
+ }
111
+ const manifestPath = join(this.outdir, "manifest.json");
112
+ writeFileSync(manifestPath, JSON.stringify(this.manifest, null, 2));
113
+ }
114
+ crossStackReference(fromStack, toStack, identifier) {
115
+ toStack.addDependency(fromStack);
116
+ const outputId = fromStack.registerOutgoingCrossStackReference(identifier);
117
+ const remoteState = toStack.registerIncomingCrossStackReference(fromStack);
118
+ return remoteState.getString(outputId);
119
+ }
120
+ }
121
+ //# sourceMappingURL=app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/facade/app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { IConstruct } from "./construct.js";
2
+ export type IAspect = {
3
+ visit(node: IConstruct): void;
4
+ };
5
+ export declare class Aspects {
6
+ static of(scope: IConstruct): Aspects;
7
+ private readonly _aspects;
8
+ private constructor();
9
+ add(aspect: IAspect): void;
10
+ get all(): IAspect[];
11
+ }
12
+ export declare function invokeAspects(root: IConstruct): void;
13
+ //# sourceMappingURL=aspects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspects.d.ts","sourceRoot":"","sources":["../../src/facade/aspects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIjD,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,qBAAa,OAAO;IAClB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAUrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C,OAAO;IAEP,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAI1B,IAAI,GAAG,IAAI,OAAO,EAAE,CAEnB;CACF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAepD"}
@@ -0,0 +1,34 @@
1
+ const aspectsRegistry = new WeakMap();
2
+ export class Aspects {
3
+ static of(scope) {
4
+ const existing = aspectsRegistry.get(scope);
5
+ if (existing !== undefined) {
6
+ return existing;
7
+ }
8
+ const aspects = new Aspects();
9
+ aspectsRegistry.set(scope, aspects);
10
+ return aspects;
11
+ }
12
+ _aspects = [];
13
+ constructor() { }
14
+ add(aspect) {
15
+ this._aspects.push(aspect);
16
+ }
17
+ get all() {
18
+ return [...this._aspects];
19
+ }
20
+ }
21
+ export function invokeAspects(root) {
22
+ recurse(root, []);
23
+ function recurse(construct, inheritedAspects) {
24
+ const localAspects = Aspects.of(construct).all;
25
+ const allAspects = [...inheritedAspects, ...localAspects];
26
+ for (const aspect of allAspects) {
27
+ aspect.visit(construct);
28
+ }
29
+ for (const child of construct.node.children) {
30
+ recurse(child, allAspects);
31
+ }
32
+ }
33
+ }
34
+ //# sourceMappingURL=aspects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspects.js","sourceRoot":"","sources":["../../src/facade/aspects.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,IAAI,OAAO,EAAuB,CAAC;AAM3D,MAAM,OAAO,OAAO;IAClB,MAAM,CAAC,EAAE,CAAC,KAAiB;QACzB,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEgB,QAAQ,GAAc,EAAE,CAAC;IAE1C,gBAAuB,CAAC;IAExB,GAAG,CAAC,MAAe;QACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,GAAG;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,IAAgB;IAC5C,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAElB,SAAS,OAAO,CAAC,SAAqB,EAAE,gBAA2B;QACjE,MAAM,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,YAAY,CAAC,CAAC;QAE1D,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { Construct } from "../construct.js";
2
+ import { TerraformBackend } from "../terraform-backend.js";
3
+ import { TerraformRemoteState } from "../terraform-remote-state.js";
4
+ export declare function getHostNameType(hostname?: string): "tfc" | "tfe";
5
+ export declare class CloudBackend extends TerraformBackend {
6
+ private readonly props;
7
+ constructor(scope: Construct, props: CloudBackendConfig);
8
+ toMetadata(): Record<string, unknown>;
9
+ getRemoteStateDataSource(scope: Construct, name: string, _fromStack: string): TerraformRemoteState;
10
+ toTerraform(): Record<string, unknown>;
11
+ protected synthesizeAttributes(): Record<string, unknown>;
12
+ }
13
+ export type CloudBackendConfig = {
14
+ readonly organization: string;
15
+ readonly workspaces: NamedCloudWorkspace | TaggedCloudWorkspaces;
16
+ readonly hostname?: string;
17
+ readonly token?: string;
18
+ };
19
+ export declare abstract class CloudWorkspace {
20
+ abstract toTerraform(): Record<string, unknown>;
21
+ }
22
+ export declare class NamedCloudWorkspace extends CloudWorkspace {
23
+ readonly name: string;
24
+ readonly project?: string | undefined;
25
+ constructor(name: string, project?: string | undefined);
26
+ toTerraform(): Record<string, unknown>;
27
+ }
28
+ export declare class TaggedCloudWorkspaces extends CloudWorkspace {
29
+ readonly tags: string[];
30
+ readonly project?: string | undefined;
31
+ constructor(tags: string[], project?: string | undefined);
32
+ toTerraform(): Record<string, unknown>;
33
+ }
34
+ //# sourceMappingURL=cloud-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-backend.d.ts","sourceRoot":"","sources":["../../../src/facade/backends/cloud-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAIpE,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAGhE;AAED,qBAAa,YAAa,SAAQ,gBAAgB;IAG9C,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADtB,KAAK,EAAE,SAAS,EACC,KAAK,EAAE,kBAAkB;IAKnC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAKrC,wBAAwB,CAC/B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,oBAAoB;IAcd,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAe5B,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMnE;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,mBAAmB,GAAG,qBAAqB,CAAC;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,8BAAsB,cAAc;IAClC,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAChD;AAED,qBAAa,mBAAoB,SAAQ,cAAc;aAEnC,IAAI,EAAE,MAAM;aACZ,OAAO,CAAC,EAAE,MAAM;gBADhB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,YAAA;IAKlC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMvC;AAED,qBAAa,qBAAsB,SAAQ,cAAc;aAErC,IAAI,EAAE,MAAM,EAAE;aACd,OAAO,CAAC,EAAE,MAAM;gBADhB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,MAAM,YAAA;IAKlC,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMvC"}
@@ -0,0 +1,84 @@
1
+ import { TerraformBackend } from "../terraform-backend.js";
2
+ import { TerraformRemoteState } from "../terraform-remote-state.js";
3
+ import { keysToSnakeCase } from "../util.js";
4
+ import { DataTerraformRemoteStateRemote } from "./remote-backend.js";
5
+ export function getHostNameType(hostname) {
6
+ if (hostname === undefined || hostname === "")
7
+ return "tfc";
8
+ return hostname.startsWith("app.terraform.io") ? "tfc" : "tfe";
9
+ }
10
+ export class CloudBackend extends TerraformBackend {
11
+ props;
12
+ constructor(scope, props) {
13
+ super(scope, "backend");
14
+ this.props = props;
15
+ }
16
+ toMetadata() {
17
+ const cloud = getHostNameType(this.props.hostname);
18
+ return { cloud };
19
+ }
20
+ getRemoteStateDataSource(scope, name, _fromStack) {
21
+ if (this.props.workspaces instanceof NamedCloudWorkspace) {
22
+ return new DataTerraformRemoteStateRemote(scope, name, {
23
+ organization: this.props.organization,
24
+ workspaces: { name: this.props.workspaces.name },
25
+ token: this.props.token,
26
+ hostname: this.props.hostname,
27
+ });
28
+ }
29
+ throw new Error("The cloud backend does not support cross-stack references when using tagged workspaces. Please use named workspaces instead.");
30
+ }
31
+ toTerraform() {
32
+ return {
33
+ terraform: {
34
+ cloud: {
35
+ ...keysToSnakeCase({
36
+ organization: this.props.organization,
37
+ hostname: this.props.hostname,
38
+ token: this.props.token,
39
+ }),
40
+ workspaces: this.props.workspaces.toTerraform(),
41
+ },
42
+ },
43
+ };
44
+ }
45
+ synthesizeAttributes() {
46
+ return keysToSnakeCase({
47
+ ...this.props,
48
+ workspaces: this.props.workspaces.toTerraform(),
49
+ });
50
+ }
51
+ }
52
+ export class CloudWorkspace {
53
+ }
54
+ export class NamedCloudWorkspace extends CloudWorkspace {
55
+ name;
56
+ project;
57
+ constructor(name, project) {
58
+ super();
59
+ this.name = name;
60
+ this.project = project;
61
+ }
62
+ toTerraform() {
63
+ return {
64
+ name: this.name,
65
+ ...(this.project !== undefined && this.project !== "" ? { project: this.project } : {}),
66
+ };
67
+ }
68
+ }
69
+ export class TaggedCloudWorkspaces extends CloudWorkspace {
70
+ tags;
71
+ project;
72
+ constructor(tags, project) {
73
+ super();
74
+ this.tags = tags;
75
+ this.project = project;
76
+ }
77
+ toTerraform() {
78
+ return {
79
+ tags: this.tags,
80
+ ...(this.project !== undefined && this.project !== "" ? { project: this.project } : {}),
81
+ };
82
+ }
83
+ }
84
+ //# sourceMappingURL=cloud-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-backend.js","sourceRoot":"","sources":["../../../src/facade/backends/cloud-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { Construct } from "../construct.js";
2
+ import { TerraformBackend } from "../terraform-backend.js";
3
+ import { TerraformRemoteState } from "../terraform-remote-state.js";
4
+ export declare class GcsBackend extends TerraformBackend {
5
+ private readonly props;
6
+ constructor(scope: Construct, props: GcsBackendConfig);
7
+ getRemoteStateDataSource(scope: Construct, name: string, _fromStack: string): TerraformRemoteState;
8
+ toTerraform(): Record<string, unknown>;
9
+ protected synthesizeAttributes(): Record<string, unknown>;
10
+ }
11
+ export declare class DataTerraformRemoteStateGcs extends TerraformRemoteState {
12
+ constructor(scope: Construct, id: string, config: DataTerraformRemoteStateGcsConfig);
13
+ }
14
+ export type GcsBackendConfig = {
15
+ readonly bucket: string;
16
+ readonly credentials?: string;
17
+ readonly accessToken?: string;
18
+ readonly prefix?: string;
19
+ readonly encryptionKey?: string;
20
+ readonly impersonateServiceAccount?: string;
21
+ readonly impersonateServiceAccountDelegates?: string[];
22
+ readonly kmsEncryptionKey?: string;
23
+ readonly storageCustomEndpoint?: string;
24
+ };
25
+ export type DataTerraformRemoteStateGcsConfig = GcsBackendConfig & {
26
+ readonly workspace?: string;
27
+ readonly defaults?: Record<string, unknown>;
28
+ };
29
+ //# sourceMappingURL=gcs-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcs-backend.d.ts","sourceRoot":"","sources":["../../../src/facade/backends/gcs-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,qBAAa,UAAW,SAAQ,gBAAgB;IAG5C,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADtB,KAAK,EAAE,SAAS,EACC,KAAK,EAAE,gBAAgB;IAKjC,wBAAwB,CAC/B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,oBAAoB;IAOd,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAU5B,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAGnE;AAED,qBAAa,2BAA4B,SAAQ,oBAAoB;gBACvD,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iCAAiC;CAGpF;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,kCAAkC,CAAC,EAAE,MAAM,EAAE,CAAC;IACvD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,gBAAgB,GAAG;IACjE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { TerraformBackend } from "../terraform-backend.js";
2
+ import { TerraformRemoteState } from "../terraform-remote-state.js";
3
+ import { keysToSnakeCase } from "../util.js";
4
+ export class GcsBackend extends TerraformBackend {
5
+ props;
6
+ constructor(scope, props) {
7
+ super(scope, "backend");
8
+ this.props = props;
9
+ }
10
+ getRemoteStateDataSource(scope, name, _fromStack) {
11
+ return new DataTerraformRemoteStateGcs(scope, name, {
12
+ ...this.props,
13
+ workspace: "${terraform.workspace}",
14
+ });
15
+ }
16
+ toTerraform() {
17
+ return {
18
+ terraform: {
19
+ backend: {
20
+ gcs: keysToSnakeCase({ ...this.props }),
21
+ },
22
+ },
23
+ };
24
+ }
25
+ synthesizeAttributes() {
26
+ return keysToSnakeCase({ ...this.props });
27
+ }
28
+ }
29
+ export class DataTerraformRemoteStateGcs extends TerraformRemoteState {
30
+ constructor(scope, id, config) {
31
+ super(scope, id, "gcs", keysToSnakeCase(config));
32
+ }
33
+ }
34
+ //# sourceMappingURL=gcs-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcs-backend.js","sourceRoot":"","sources":["../../../src/facade/backends/gcs-backend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,OAAO,UAAW,SAAQ,gBAAgB;IAG3B;IAFnB,YACE,KAAgB,EACC,KAAuB;QAExC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAFP,UAAK,GAAL,KAAK,CAAkB;IAG1C,CAAC;IAEQ,wBAAwB,CAC/B,KAAgB,EAChB,IAAY,EACZ,UAAkB;QAElB,OAAO,IAAI,2BAA2B,CAAC,KAAK,EAAE,IAAI,EAAE;YAClD,GAAG,IAAI,CAAC,KAAK;YACb,SAAS,EAAE,wBAAwB;SACpC,CAAC,CAAC;IACL,CAAC;IAEQ,WAAW;QAClB,OAAO;YACL,SAAS,EAAE;gBACT,OAAO,EAAE;oBACP,GAAG,EAAE,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;iBACxC;aACF;SACF,CAAC;IACJ,CAAC;IAEkB,oBAAoB;QACrC,OAAO,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,OAAO,2BAA4B,SAAQ,oBAAoB;IACnE,YAAY,KAAgB,EAAE,EAAU,EAAE,MAAyC;QACjF,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export * from "./cloud-backend.js";
2
+ export * from "./gcs-backend.js";
3
+ export * from "./remote-backend.js";
4
+ export * from "./s3-backend.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/facade/backends/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./cloud-backend.js";
2
+ export * from "./gcs-backend.js";
3
+ export * from "./remote-backend.js";
4
+ export * from "./s3-backend.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/facade/backends/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { Construct } from "../construct.js";
2
+ import { TerraformBackend } from "../terraform-backend.js";
3
+ import { TerraformRemoteState } from "../terraform-remote-state.js";
4
+ export declare class RemoteBackend extends TerraformBackend {
5
+ private readonly props;
6
+ constructor(scope: Construct, props: RemoteBackendConfig);
7
+ toMetadata(): Record<string, unknown>;
8
+ getRemoteStateDataSource(scope: Construct, name: string, _fromStack: string): TerraformRemoteState;
9
+ toTerraform(): Record<string, unknown>;
10
+ protected synthesizeAttributes(): Record<string, unknown>;
11
+ }
12
+ export declare class DataTerraformRemoteStateRemote extends TerraformRemoteState {
13
+ constructor(scope: Construct, id: string, config: DataTerraformRemoteStateRemoteConfig);
14
+ }
15
+ export type IRemoteWorkspace = {};
16
+ export declare class NamedRemoteWorkspace implements IRemoteWorkspace {
17
+ readonly name: string;
18
+ constructor(name: string);
19
+ }
20
+ export declare class PrefixedRemoteWorkspaces implements IRemoteWorkspace {
21
+ readonly prefix: string;
22
+ constructor(prefix: string);
23
+ }
24
+ export type RemoteBackendConfig = {
25
+ readonly hostname?: string;
26
+ readonly organization: string;
27
+ readonly token?: string;
28
+ readonly workspaces: IRemoteWorkspace;
29
+ };
30
+ export type DataTerraformRemoteStateRemoteConfig = RemoteBackendConfig & {
31
+ readonly workspace?: string;
32
+ readonly defaults?: Record<string, unknown>;
33
+ };
34
+ //# sourceMappingURL=remote-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-backend.d.ts","sourceRoot":"","sources":["../../../src/facade/backends/remote-backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAIpE,qBAAa,aAAc,SAAQ,gBAAgB;IAG/C,OAAO,CAAC,QAAQ,CAAC,KAAK;gBADtB,KAAK,EAAE,SAAS,EACC,KAAK,EAAE,mBAAmB;IAKpC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAKrC,wBAAwB,CAC/B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,oBAAoB;IAMd,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;cAU5B,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAGnE;AAED,qBAAa,8BAA+B,SAAQ,oBAAoB;gBAC1D,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,oCAAoC;CAGvF;AAED,MAAM,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAElC,qBAAa,oBAAqB,YAAW,gBAAgB;aAC/B,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CACzC;AAED,qBAAa,wBAAyB,YAAW,gBAAgB;aACnC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAC3C;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,oCAAoC,GAAG,mBAAmB,GAAG;IACvE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { TerraformBackend } from "../terraform-backend.js";
2
+ import { TerraformRemoteState } from "../terraform-remote-state.js";
3
+ import { keysToSnakeCase } from "../util.js";
4
+ import { getHostNameType } from "./cloud-backend.js";
5
+ export class RemoteBackend extends TerraformBackend {
6
+ props;
7
+ constructor(scope, props) {
8
+ super(scope, "backend");
9
+ this.props = props;
10
+ }
11
+ toMetadata() {
12
+ const cloud = getHostNameType(this.props.hostname);
13
+ return { cloud };
14
+ }
15
+ getRemoteStateDataSource(scope, name, _fromStack) {
16
+ return new DataTerraformRemoteStateRemote(scope, name, {
17
+ ...this.props,
18
+ });
19
+ }
20
+ toTerraform() {
21
+ return {
22
+ terraform: {
23
+ backend: {
24
+ remote: keysToSnakeCase({ ...this.props }),
25
+ },
26
+ },
27
+ };
28
+ }
29
+ synthesizeAttributes() {
30
+ return keysToSnakeCase({ ...this.props });
31
+ }
32
+ }
33
+ export class DataTerraformRemoteStateRemote extends TerraformRemoteState {
34
+ constructor(scope, id, config) {
35
+ super(scope, id, "remote", keysToSnakeCase(config));
36
+ }
37
+ }
38
+ export class NamedRemoteWorkspace {
39
+ name;
40
+ constructor(name) {
41
+ this.name = name;
42
+ }
43
+ }
44
+ export class PrefixedRemoteWorkspaces {
45
+ prefix;
46
+ constructor(prefix) {
47
+ this.prefix = prefix;
48
+ }
49
+ }
50
+ //# sourceMappingURL=remote-backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-backend.js","sourceRoot":"","sources":["../../../src/facade/backends/remote-backend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,OAAO,aAAc,SAAQ,gBAAgB;IAG9B;IAFnB,YACE,KAAgB,EACC,KAA0B;QAE3C,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAFP,UAAK,GAAL,KAAK,CAAqB;IAG7C,CAAC;IAEQ,UAAU;QACjB,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAEQ,wBAAwB,CAC/B,KAAgB,EAChB,IAAY,EACZ,UAAkB;QAElB,OAAO,IAAI,8BAA8B,CAAC,KAAK,EAAE,IAAI,EAAE;YACrD,GAAG,IAAI,CAAC,KAAK;SACd,CAAC,CAAC;IACL,CAAC;IAEQ,WAAW;QAClB,OAAO;YACL,SAAS,EAAE;gBACT,OAAO,EAAE;oBACP,MAAM,EAAE,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;iBAC3C;aACF;SACF,CAAC;IACJ,CAAC;IAEkB,oBAAoB;QACrC,OAAO,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,OAAO,8BAA+B,SAAQ,oBAAoB;IACtE,YAAY,KAAgB,EAAE,EAAU,EAAE,MAA4C;QACpF,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,CAAC;CACF;AAID,MAAM,OAAO,oBAAoB;IACH;IAA5B,YAA4B,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;CAC7C;AAED,MAAM,OAAO,wBAAwB;IACP;IAA5B,YAA4B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;CAC/C"}
@@ -0,0 +1,97 @@
1
+ import type { Construct } from "../construct.js";
2
+ import { TerraformBackend } from "../terraform-backend.js";
3
+ import { TerraformRemoteState } from "../terraform-remote-state.js";
4
+ export declare class S3Backend extends TerraformBackend {
5
+ private readonly props;
6
+ constructor(scope: Construct, props: S3BackendConfig);
7
+ getRemoteStateDataSource(scope: Construct, name: string, _fromStack: string): TerraformRemoteState;
8
+ toTerraform(): Record<string, unknown>;
9
+ protected synthesizeAttributes(): Record<string, unknown>;
10
+ }
11
+ export declare class DataTerraformRemoteStateS3 extends TerraformRemoteState {
12
+ constructor(scope: Construct, id: string, config: DataTerraformRemoteStateS3Config);
13
+ }
14
+ export type S3BackendConfig = {
15
+ readonly bucket: string;
16
+ readonly key: string;
17
+ readonly region?: string;
18
+ readonly endpoint?: string;
19
+ readonly encrypt?: boolean;
20
+ readonly acl?: string;
21
+ readonly accessKey?: string;
22
+ readonly secretKey?: string;
23
+ readonly kmsKeyId?: string;
24
+ readonly dynamodbTable?: string;
25
+ readonly profile?: string;
26
+ readonly sharedCredentialsFile?: string;
27
+ readonly sharedCredentialsFiles?: string[];
28
+ readonly sharedConfigFiles?: string[];
29
+ readonly token?: string;
30
+ readonly roleArn?: string;
31
+ readonly assumeRolePolicy?: string;
32
+ readonly assumeRolePolicyArns?: string[];
33
+ readonly assumeRoleTags?: Record<string, string>;
34
+ readonly assumeRoleTransitiveTagKeys?: string[];
35
+ readonly externalId?: string;
36
+ readonly sessionName?: string;
37
+ readonly workspaceKeyPrefix?: string;
38
+ readonly dynamodbEndpoint?: string;
39
+ readonly iamEndpoint?: string;
40
+ readonly stsEndpoint?: string;
41
+ readonly stsRegion?: string;
42
+ readonly forcePathStyle?: boolean;
43
+ readonly usePathStyle?: boolean;
44
+ readonly skipCredentialsValidation?: boolean;
45
+ readonly skipRegionValidation?: boolean;
46
+ readonly skipRequestingAccountId?: boolean;
47
+ readonly skipMetadataApiCheck?: boolean;
48
+ readonly skipS3Checksum?: boolean;
49
+ readonly sseCustomerKey?: string;
50
+ readonly maxRetries?: number;
51
+ readonly useLegacyWorkflow?: boolean;
52
+ readonly allowedAccountIds?: string[];
53
+ readonly forbiddenAccountIds?: string[];
54
+ readonly customCaBundle?: string;
55
+ readonly ec2MetadataServiceEndpoint?: string;
56
+ readonly ec2MetadataServiceEndpointMode?: string;
57
+ readonly httpProxy?: string;
58
+ readonly httpsProxy?: string;
59
+ readonly insecure?: boolean;
60
+ readonly noProxy?: string;
61
+ readonly retryMode?: string;
62
+ readonly endpoints?: S3BackendEndpointConfig;
63
+ readonly assumeRole?: S3BackendAssumeRoleConfig;
64
+ readonly assumeRoleWithWebIdentity?: S3BackendAssumeRoleWithWebIdentityConfig;
65
+ };
66
+ export type S3BackendEndpointConfig = {
67
+ readonly dynamodb?: string;
68
+ readonly iam?: string;
69
+ readonly s3?: string;
70
+ readonly sso?: string;
71
+ readonly sts?: string;
72
+ };
73
+ export type S3BackendAssumeRoleConfig = {
74
+ readonly roleArn: string;
75
+ readonly duration?: string;
76
+ readonly externalId?: string;
77
+ readonly policy?: string;
78
+ readonly policyArns?: string[];
79
+ readonly sessionName?: string;
80
+ readonly sourceIdentity?: string;
81
+ readonly tags?: Record<string, string>;
82
+ readonly transitiveTagKeys?: string[];
83
+ };
84
+ export type S3BackendAssumeRoleWithWebIdentityConfig = {
85
+ readonly roleArn?: string;
86
+ readonly duration?: string;
87
+ readonly policy?: string;
88
+ readonly policyArns?: string[];
89
+ readonly sessionName?: string;
90
+ readonly webIdentityToken?: string;
91
+ readonly webIdentityTokenFile?: string;
92
+ };
93
+ export type DataTerraformRemoteStateS3Config = S3BackendConfig & {
94
+ readonly workspace?: string;
95
+ readonly defaults?: Record<string, unknown>;
96
+ };
97
+ //# sourceMappingURL=s3-backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3-backend.d.ts","sourceRoot":"","sources":["../../../src/facade/backends/s3-backend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { TerraformBackend } from "../terraform-backend.js";
2
+ import { TerraformRemoteState } from "../terraform-remote-state.js";
3
+ import { keysToSnakeCase } from "../util.js";
4
+ export class S3Backend extends TerraformBackend {
5
+ props;
6
+ constructor(scope, props) {
7
+ super(scope, "backend");
8
+ this.props = props;
9
+ }
10
+ getRemoteStateDataSource(scope, name, _fromStack) {
11
+ return new DataTerraformRemoteStateS3(scope, name, {
12
+ ...this.props,
13
+ workspace: "${terraform.workspace}",
14
+ });
15
+ }
16
+ toTerraform() {
17
+ return {
18
+ terraform: {
19
+ backend: {
20
+ s3: keysToSnakeCase({ ...this.props }),
21
+ },
22
+ },
23
+ };
24
+ }
25
+ synthesizeAttributes() {
26
+ return keysToSnakeCase({ ...this.props });
27
+ }
28
+ }
29
+ export class DataTerraformRemoteStateS3 extends TerraformRemoteState {
30
+ constructor(scope, id, config) {
31
+ super(scope, id, "s3", keysToSnakeCase(config));
32
+ }
33
+ }
34
+ //# sourceMappingURL=s3-backend.js.map