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
package/README.md CHANGED
@@ -1,171 +1,15 @@
1
1
  # tfts
2
2
 
3
- TypeScript-first infrastructure as code for Terraform. A lightweight, type-safe alternative to CDKTF.
4
-
5
- ## Overview
6
-
7
- tfts lets you define Terraform infrastructure using TypeScript with full type safety. It generates Terraform JSON that you can apply with the standard Terraform CLI.
8
-
9
- Key differences from CDKTF:
10
-
11
- - **Type-safe attribute references** - Computed attributes return `TokenValue<string>` instead of `string`, preventing invalid operations like `.toUpperCase()` at compile time
12
- - **Lightweight** - No JSII, no complex runtime, just TypeScript
13
-
14
- ## Getting Started
15
-
16
- ### Prerequisites
17
-
18
- - [Bun](https://bun.sh) or Node.js
19
- - [Terraform CLI](https://developer.hashicorp.com/terraform/downloads)
20
-
21
- ### Installation
3
+ To install dependencies:
22
4
 
23
5
  ```bash
24
- bun add tfts
25
- ```
26
-
27
- ### Project Setup
28
-
29
- Create `cdktf.json`:
30
-
31
- ```json
32
- {
33
- "language": "typescript",
34
- "app": "bun main.ts",
35
- "output": "cdktf.out",
36
- "codeMakerOutput": ".gen",
37
- "terraformProviders": [
38
- {
39
- "name": "google",
40
- "source": "hashicorp/google",
41
- "version": "5.0.0"
42
- }
43
- ]
44
- }
45
- ```
46
-
47
- Generate provider bindings:
48
-
49
- ```bash
50
- bunx tfts get
51
- ```
52
-
53
- ### Write Infrastructure
54
-
55
- Create `main.ts`:
56
-
57
- ```typescript
58
- import { App, TerraformStack, TerraformOutput } from "tfts";
59
- import { GoogleProvider, GoogleComputeNetwork } from "./.gen/providers/google/index.js";
60
-
61
- const app = new App();
62
- const stack = new TerraformStack(app, "my-stack");
63
-
64
- new GoogleProvider(stack, "google", {
65
- project: "my-project",
66
- region: "us-central1",
67
- });
68
-
69
- const network = new GoogleComputeNetwork(stack, "network", {
70
- name: "my-network",
71
- autoCreateSubnetworks: true,
72
- });
73
-
74
- new TerraformOutput(stack, "network_id", {
75
- value: network.id,
76
- });
77
-
78
- app.synth();
6
+ bun install
79
7
  ```
80
8
 
81
- ### Deploy
9
+ To run:
82
10
 
83
11
  ```bash
84
- # Synthesize to Terraform JSON
85
- bun main.ts
86
-
87
- # Apply with Terraform
88
- cd cdktf.out/stacks/my-stack
89
- terraform init
90
- terraform apply
12
+ bun run index.ts
91
13
  ```
92
14
 
93
- ## Migration from CDKTF
94
-
95
- ### Type-Safe Attributes
96
-
97
- The main difference: computed attributes return `TokenValue<string>` instead of `string`.
98
-
99
- ```typescript
100
- // CDKTF - compiles but broken at runtime
101
- network.id.toUpperCase();
102
-
103
- // tfts - compile error (TokenValue<string> has no .toUpperCase())
104
- network.id.toUpperCase(); // Error!
105
-
106
- // tfts - template literals work via toString()
107
- `prefix-${network.id}`;
108
- ```
109
-
110
- ### Custom Constructs
111
-
112
- If your CDKTF code has custom constructs with string config properties:
113
-
114
- ```typescript
115
- // CDKTF
116
- interface MyDatabaseConfig {
117
- name: string;
118
- vpcId: string; // Often passed a token like vpc.id
119
- }
120
-
121
- class MyDatabase extends Construct {
122
- constructor(scope: Construct, id: string, config: MyDatabaseConfig) {
123
- // ...
124
- }
125
- }
126
-
127
- new MyDatabase(stack, "db", {
128
- name: "mydb",
129
- vpcId: vpc.id, // Works in CDKTF because vpc.id is typed as string
130
- });
131
- ```
132
-
133
- In tfts, update config properties that accept tokens to use `TfString`:
134
-
135
- ```typescript
136
- import { TfString } from "tfts";
137
-
138
- // tfts
139
- interface MyDatabaseConfig {
140
- name: string; // Literal only - keep as string
141
- vpcId: TfString; // Accepts tokens - use TfString
142
- }
143
- ```
144
-
145
- ### Import Changes
146
-
147
- ```typescript
148
- // CDKTF
149
- import { App, TerraformStack } from "cdktf";
150
-
151
- // tfts
152
- import { App, TerraformStack } from "tfts";
153
- ```
154
-
155
- ### Supported Constructs
156
-
157
- | Construct | Status |
158
- |-----------|--------|
159
- | TerraformResource | Supported |
160
- | TerraformDataSource | Supported |
161
- | TerraformProvider | Supported |
162
- | TerraformVariable | Supported |
163
- | TerraformOutput | Supported |
164
- | TerraformLocal | Supported |
165
- | Backends (S3, GCS, Remote, Local) | Supported |
166
- | TerraformModule | Not yet |
167
- | TerraformIterator | Not yet |
168
-
169
- ## License
170
-
171
- MIT
15
+ This project was created using `bun init` in bun v1.2.19. [Bun](https://bun.com) is a fast all-in-one JavaScript runtime.
@@ -0,0 +1,18 @@
1
+ import { z } from "zod";
2
+ export declare const TftsConfigSchema: z.ZodObject<{
3
+ language: z.ZodDefault<z.ZodEnum<{
4
+ typescript: "typescript";
5
+ }>>;
6
+ app: z.ZodString;
7
+ output: z.ZodDefault<z.ZodString>;
8
+ codeMakerOutput: z.ZodOptional<z.ZodString>;
9
+ projectId: z.ZodOptional<z.ZodString>;
10
+ sendCrashReports: z.ZodDefault<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString]>, z.ZodTransform<boolean, string | boolean>>>>;
11
+ terraformProviders: z.ZodOptional<z.ZodArray<z.ZodString>>;
12
+ terraformModules: z.ZodOptional<z.ZodArray<z.ZodString>>;
13
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
14
+ }, z.core.$strip>;
15
+ export type TftsConfig = z.infer<typeof TftsConfigSchema>;
16
+ export declare function readConfig(configPath: string): TftsConfig;
17
+ export declare function findConfig(cwd: string): string | null;
18
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;iBAU3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAMzD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASrD"}
@@ -0,0 +1,36 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { z } from "zod";
3
+ const coercedBoolean = z
4
+ .union([z.boolean(), z.string()])
5
+ .transform((val) => (typeof val === "boolean" ? val : val === "true"))
6
+ .optional()
7
+ .default(false);
8
+ export const TftsConfigSchema = z.object({
9
+ language: z.enum(["typescript"]).default("typescript"),
10
+ app: z.string(),
11
+ output: z.string().default("cdktf.out"),
12
+ codeMakerOutput: z.string().optional(),
13
+ projectId: z.string().optional(),
14
+ sendCrashReports: coercedBoolean,
15
+ terraformProviders: z.array(z.string()).optional(),
16
+ terraformModules: z.array(z.string()).optional(),
17
+ context: z.record(z.string(), z.unknown()).optional(),
18
+ });
19
+ export function readConfig(configPath) {
20
+ if (!existsSync(configPath)) {
21
+ throw new Error(`Config file not found: ${configPath}`);
22
+ }
23
+ const content = JSON.parse(readFileSync(configPath, "utf-8"));
24
+ return TftsConfigSchema.parse(content);
25
+ }
26
+ export function findConfig(cwd) {
27
+ const configNames = ["cdktf.json", "tfts.json"];
28
+ for (const name of configNames) {
29
+ const configPath = `${cwd}/${name}`;
30
+ if (existsSync(configPath)) {
31
+ return configPath;
32
+ }
33
+ }
34
+ return null;
35
+ }
36
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,cAAc,GAAG,CAAC;KACrB,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;KAChC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;KACrE,QAAQ,EAAE;KACV,OAAO,CAAC,KAAK,CAAC,CAAC;AAElB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IACtD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IACvC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,gBAAgB,EAAE,cAAc;IAChC,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAClD,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC;AAIH,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,OAAO,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,WAAW,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAChD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type GetOptions = {
2
+ cwd?: string;
3
+ output?: string;
4
+ providers?: string[];
5
+ modules?: string[];
6
+ };
7
+ export declare function get(options?: GetOptions): Promise<void>;
8
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/cli/get.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,wBAAsB,GAAG,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjE"}
@@ -0,0 +1,107 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { cleanupWorkDir, fetchProviderSchema, generateProviderBindings, parseProviderConstraint, } from "../codegen/index.js";
5
+ import { findConfig, readConfig } from "./config.js";
6
+ export async function get(options = {}) {
7
+ const cwd = options.cwd ?? process.cwd();
8
+ const configPath = findConfig(cwd);
9
+ const config = configPath !== null ? readConfig(configPath) : null;
10
+ const providers = options.providers ?? config?.terraformProviders ?? [];
11
+ const modules = options.modules ?? config?.terraformModules ?? [];
12
+ const output = options.output ?? config?.codeMakerOutput ?? ".gen";
13
+ if (providers.length === 0 && modules.length === 0) {
14
+ console.log("No providers or modules specified. Add them to cdktf.json or use --providers/--modules flags.");
15
+ return;
16
+ }
17
+ console.log("Generating provider bindings...");
18
+ console.log(` Output: ${output}`);
19
+ for (const provider of providers) {
20
+ console.log(` Generating: ${provider}`);
21
+ await generateProvider(provider, `${cwd}/${output}`);
22
+ }
23
+ for (const module of modules) {
24
+ console.log(` Generating: ${module}`);
25
+ await generateModule(module, `${cwd}/${output}`);
26
+ }
27
+ console.log("\nGeneration complete!");
28
+ }
29
+ async function generateProvider(providerSpec, outputDir) {
30
+ const constraint = parseProviderConstraint(providerSpec);
31
+ const workDir = join(tmpdir(), `tfts-schema-${constraint.name}-${Date.now()}`);
32
+ try {
33
+ console.log(` Fetching schema for ${constraint.fqn}@${constraint.version ?? "latest"}...`);
34
+ const { schema, resolvedVersion } = fetchProviderSchema(constraint, workDir);
35
+ const constraintWithVersion = {
36
+ ...constraint,
37
+ version: resolvedVersion ?? constraint.version,
38
+ };
39
+ const result = generateProviderBindings(constraintWithVersion, schema);
40
+ if (result.isErr()) {
41
+ console.error(` Error: ${result.error.message}`);
42
+ return;
43
+ }
44
+ for (const file of result.value) {
45
+ const filePath = join(outputDir, file.path);
46
+ const dir = filePath.substring(0, filePath.lastIndexOf("/"));
47
+ await mkdir(dir, { recursive: true });
48
+ await writeFile(filePath, file.content);
49
+ }
50
+ console.log(` Generated ${result.value.length} files`);
51
+ }
52
+ finally {
53
+ cleanupWorkDir(workDir);
54
+ }
55
+ }
56
+ function parseModuleSpec(spec) {
57
+ const atIndex = spec.indexOf("@");
58
+ const fullName = atIndex === -1 ? spec : spec.slice(0, atIndex);
59
+ const version = atIndex === -1 ? "latest" : spec.slice(atIndex + 1);
60
+ const parts = fullName.split("/");
61
+ if (parts.length < 3) {
62
+ return null;
63
+ }
64
+ return {
65
+ namespace: parts[0] ?? "",
66
+ name: parts[1] ?? "",
67
+ provider: parts[2] ?? "",
68
+ version,
69
+ };
70
+ }
71
+ async function generateModule(moduleSpec, outputDir) {
72
+ const parsed = parseModuleSpec(moduleSpec);
73
+ if (!parsed) {
74
+ console.log(` Skipping ${moduleSpec}: invalid module format`);
75
+ return;
76
+ }
77
+ const { namespace, name, provider, version } = parsed;
78
+ const moduleDir = `${outputDir}/modules/${namespace}/${name}/${provider}`;
79
+ await mkdir(moduleDir, { recursive: true });
80
+ console.log(` Generating module ${namespace}/${name}/${provider}@${version}...`);
81
+ const className = capitalize(name);
82
+ const content = `import { TerraformModule } from "../../../facade/terraform-module.js";
83
+ import type { Construct } from "../../../facade/construct.js";
84
+
85
+ export type ${className}ModuleConfig = {
86
+ readonly source?: string;
87
+ readonly version?: string;
88
+ };
89
+
90
+ export class ${className}Module extends TerraformModule {
91
+ constructor(scope: Construct, id: string, config: ${className}ModuleConfig = {}) {
92
+ super(scope, id, {
93
+ source: "${namespace}/${name}/${provider}",
94
+ version: config.version ?? "${version}",
95
+ });
96
+ }
97
+ }
98
+ `;
99
+ await writeFile(`${moduleDir}/index.ts`, content);
100
+ }
101
+ function capitalize(str) {
102
+ return str
103
+ .split("-")
104
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
105
+ .join("");
106
+ }
107
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/cli/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASrD,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,UAAsB,EAAE;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzC,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,EAAE,kBAAkB,IAAI,EAAE,CAAC;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,EAAE,gBAAgB,IAAI,EAAE,CAAC;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,eAAe,IAAI,MAAM,CAAC;IAEnE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CACT,+FAA+F,CAChG,CAAC;QACF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;IAEnC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;QACzC,MAAM,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAC;QACvC,MAAM,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,YAAoB,EAAE,SAAiB;IACrE,MAAM,UAAU,GAAG,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAE/E,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,CAAC,GAAG,IAAI,UAAU,CAAC,OAAO,IAAI,QAAQ,KAAK,CAAC,CAAC;QAE9F,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7E,MAAM,qBAAqB,GAAG;YAC5B,GAAG,UAAU;YACb,OAAO,EAAE,eAAe,IAAI,UAAU,CAAC,OAAO;SAC/C,CAAC;QACF,MAAM,MAAM,GAAG,wBAAwB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QAEvE,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;IAC5D,CAAC;YAAS,CAAC;QACT,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IAMnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QACzB,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QACpB,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;QACxB,OAAO;KACR,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,UAAkB,EAAE,SAAiB;IACjE,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,yBAAyB,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IACtD,MAAM,SAAS,GAAG,GAAG,SAAS,YAAY,SAAS,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;IAC1E,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,OAAO,CAAC,GAAG,CAAC,yBAAyB,SAAS,IAAI,IAAI,IAAI,QAAQ,IAAI,OAAO,KAAK,CAAC,CAAC;IAEpF,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG;;;cAGJ,SAAS;;;;;eAKR,SAAS;sDAC8B,SAAS;;iBAE9C,SAAS,IAAI,IAAI,IAAI,QAAQ;oCACV,OAAO;;;;CAI1C,CAAC;IAEA,MAAM,SAAS,CAAC,GAAG,SAAS,WAAW,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG;SACP,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":""}
@@ -0,0 +1,85 @@
1
+ import { get } from "./get.js";
2
+ import { synth } from "./synth.js";
3
+ const cliArgs = process.argv.slice(2);
4
+ const command = cliArgs[0];
5
+ function parseFlags(flagArgs) {
6
+ const flags = {};
7
+ for (let i = 0; i < flagArgs.length; i++) {
8
+ const arg = flagArgs[i];
9
+ if (arg === undefined)
10
+ continue;
11
+ if (arg.startsWith("--")) {
12
+ const key = arg.slice(2);
13
+ const next = flagArgs[i + 1];
14
+ if (next !== undefined && !next.startsWith("--")) {
15
+ flags[key] = next;
16
+ i++;
17
+ }
18
+ else {
19
+ flags[key] = true;
20
+ }
21
+ }
22
+ }
23
+ return flags;
24
+ }
25
+ function getStringFlag(flags, key) {
26
+ const value = flags[key];
27
+ return typeof value === "string" ? value : undefined;
28
+ }
29
+ async function main() {
30
+ const flags = parseFlags(cliArgs.slice(1));
31
+ switch (command) {
32
+ case "synth":
33
+ case "synthesize":
34
+ await synth({
35
+ app: getStringFlag(flags, "app"),
36
+ output: getStringFlag(flags, "output"),
37
+ });
38
+ break;
39
+ case "get": {
40
+ const providersStr = getStringFlag(flags, "providers");
41
+ const modulesStr = getStringFlag(flags, "modules");
42
+ await get({
43
+ output: getStringFlag(flags, "output"),
44
+ providers: providersStr !== undefined ? providersStr.split(",") : undefined,
45
+ modules: modulesStr !== undefined ? modulesStr.split(",") : undefined,
46
+ });
47
+ break;
48
+ }
49
+ case "help":
50
+ case "--help":
51
+ case "-h":
52
+ case undefined:
53
+ printHelp();
54
+ break;
55
+ default:
56
+ console.error(`Unknown command: ${String(command)}`);
57
+ printHelp();
58
+ process.exit(1);
59
+ }
60
+ }
61
+ function printHelp() {
62
+ console.log(`
63
+ tfts - Terraform CDK TypeScript
64
+
65
+ Commands:
66
+ synth, synthesize Synthesize Terraform configuration
67
+ get Generate provider/module bindings
68
+
69
+ Options:
70
+ --app <command> Command to run the app (synth)
71
+ --output <dir> Output directory (synth: cdktf.out, get: .gen)
72
+ --providers <list> Comma-separated provider list (get)
73
+ --modules <list> Comma-separated module list (get)
74
+ --help, -h Show this help
75
+
76
+ Examples:
77
+ tfts synth --app "bun run main.ts"
78
+ tfts get --providers "hashicorp/aws@~>5.0"
79
+ `);
80
+ }
81
+ main().catch((err) => {
82
+ console.error("Error:", err.message);
83
+ process.exit(1);
84
+ });
85
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3B,SAAS,UAAU,CAAC,QAA2B;IAC7C,MAAM,KAAK,GAAqC,EAAE,CAAC;IACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBAClB,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAuC,EAAE,GAAW;IACzE,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3C,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,YAAY;YACf,MAAM,KAAK,CAAC;gBACV,GAAG,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC;gBAChC,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;aACvC,CAAC,CAAC;YACH,MAAM;QAER,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YACvD,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACnD,MAAM,GAAG,CAAC;gBACR,MAAM,EAAE,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;gBACtC,SAAS,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC3E,OAAO,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;aACtE,CAAC,CAAC;YACH,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,SAAS,EAAE,CAAC;YACZ,MAAM;QAER;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACrD,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;CAiBb,CAAC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;IAC1B,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type SynthOptions = {
2
+ app?: string;
3
+ output?: string;
4
+ cwd?: string;
5
+ };
6
+ export declare function synth(options?: SynthOptions): Promise<void>;
7
+ //# sourceMappingURL=synth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synth.d.ts","sourceRoot":"","sources":["../../src/cli/synth.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCrE"}
@@ -0,0 +1,35 @@
1
+ import { spawn } from "node:child_process";
2
+ import { findConfig, readConfig } from "./config.js";
3
+ export async function synth(options = {}) {
4
+ const cwd = options.cwd ?? process.cwd();
5
+ const configPath = findConfig(cwd);
6
+ if (configPath === null && options.app === undefined) {
7
+ throw new Error("No config file found and no app specified. Create cdktf.json or use --app flag.");
8
+ }
9
+ const config = configPath !== null ? readConfig(configPath) : null;
10
+ const appCommand = options.app ?? config?.app;
11
+ const outputDir = options.output ?? config?.output ?? "cdktf.out";
12
+ if (appCommand === undefined) {
13
+ throw new Error("No app command specified");
14
+ }
15
+ console.log(`Synthesizing Terraform configuration...`);
16
+ console.log(` App: ${appCommand}`);
17
+ console.log(` Output: ${outputDir}`);
18
+ const env = { ...process.env, CDKTF_OUTDIR: `${cwd}/${outputDir}` };
19
+ const exitCode = await new Promise((resolve, reject) => {
20
+ const proc = spawn("sh", ["-c", appCommand], {
21
+ cwd,
22
+ env,
23
+ stdio: "inherit",
24
+ });
25
+ proc.on("close", (code) => {
26
+ resolve(code ?? 1);
27
+ });
28
+ proc.on("error", reject);
29
+ });
30
+ if (exitCode !== 0) {
31
+ throw new Error(`App command failed with exit code ${String(exitCode)}`);
32
+ }
33
+ console.log(`\nSynthesis complete. Output written to ${outputDir}/`);
34
+ }
35
+ //# sourceMappingURL=synth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synth.js","sourceRoot":"","sources":["../../src/cli/synth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQrD,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,UAAwB,EAAE;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzC,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,UAAU,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,iFAAiF,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,GAAG,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,EAAE,MAAM,IAAI,WAAW,CAAC;IAElE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,EAAE,CAAC,CAAC;IAEtC,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,GAAG,IAAI,SAAS,EAAE,EAAE,CAAC;IAEpE,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE;YAC3C,GAAG;YACH,GAAG;YACH,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,2CAA2C,SAAS,GAAG,CAAC,CAAC;AACvE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type ProviderConstraint, type TerraformSchema } from "./schema.js";
2
+ export type FetchSchemaResult = {
3
+ readonly schema: TerraformSchema;
4
+ readonly resolvedVersion: string | undefined;
5
+ };
6
+ export declare function parseProviderVersionFromLockFile(lockFilePath: string, providerFqn: string): string | undefined;
7
+ export declare function fetchProviderSchema(constraint: ProviderConstraint, workDir: string): FetchSchemaResult;
8
+ export declare function cleanupWorkDir(workDir: string): void;
9
+ //# sourceMappingURL=fetch-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-schema.d.ts","sourceRoot":"","sources":["../../src/codegen/fetch-schema.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAwB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAElG,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9C,CAAC;AAEF,wBAAgB,gCAAgC,CAC9C,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAapB;AAED,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,kBAAkB,EAC9B,OAAO,EAAE,MAAM,GACd,iBAAiB,CAwCnB;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpD"}
@@ -0,0 +1,51 @@
1
+ import { execSync } from "node:child_process";
2
+ import { mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
3
+ import { parseTerraformSchema } from "./schema.js";
4
+ export function parseProviderVersionFromLockFile(lockFilePath, providerFqn) {
5
+ const content = readFileSync(lockFilePath, "utf-8");
6
+ // HCL format: provider "registry.terraform.io/hashicorp/google" { version = "1.2.3" ... }
7
+ const escapedFqn = providerFqn.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
8
+ const providerBlockRegex = new RegExp(`provider\\s+"${escapedFqn}"\\s*\\{([^}]+)\\}`, "s");
9
+ const blockMatch = content.match(providerBlockRegex);
10
+ if (blockMatch === null) {
11
+ return undefined;
12
+ }
13
+ const versionMatch = blockMatch[1]?.match(/version\s*=\s*"([^"]+)"/);
14
+ return versionMatch?.[1];
15
+ }
16
+ export function fetchProviderSchema(constraint, workDir) {
17
+ const providerConfig = {
18
+ source: constraint.fqn,
19
+ };
20
+ if (constraint.version !== undefined) {
21
+ providerConfig.version = constraint.version;
22
+ }
23
+ const tfConfig = {
24
+ terraform: {
25
+ required_providers: {
26
+ [constraint.name]: providerConfig,
27
+ },
28
+ },
29
+ };
30
+ mkdirSync(workDir, { recursive: true });
31
+ writeFileSync(`${workDir}/main.tf.json`, JSON.stringify(tfConfig, null, 2));
32
+ execSync("terraform init -no-color", {
33
+ cwd: workDir,
34
+ stdio: "pipe",
35
+ maxBuffer: 100 * 1024 * 1024,
36
+ });
37
+ const schemaOutput = execSync("terraform providers schema -json", {
38
+ cwd: workDir,
39
+ stdio: "pipe",
40
+ maxBuffer: 100 * 1024 * 1024,
41
+ });
42
+ const rawSchema = JSON.parse(schemaOutput.toString());
43
+ const schema = parseTerraformSchema(rawSchema);
44
+ const lockFilePath = `${workDir}/.terraform.lock.hcl`;
45
+ const resolvedVersion = parseProviderVersionFromLockFile(lockFilePath, `registry.terraform.io/${constraint.fqn}`);
46
+ return { schema, resolvedVersion };
47
+ }
48
+ export function cleanupWorkDir(workDir) {
49
+ rmSync(workDir, { recursive: true, force: true });
50
+ }
51
+ //# sourceMappingURL=fetch-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-schema.js","sourceRoot":"","sources":["../../src/codegen/fetch-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAA2B,oBAAoB,EAAwB,MAAM,aAAa,CAAC;AAOlG,MAAM,UAAU,gCAAgC,CAC9C,YAAoB,EACpB,WAAmB;IAEnB,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEpD,0FAA0F;IAC1F,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACtE,MAAM,kBAAkB,GAAG,IAAI,MAAM,CAAC,gBAAgB,UAAU,oBAAoB,EAAE,GAAG,CAAC,CAAC;IAC3F,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACrD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACrE,OAAO,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAA8B,EAC9B,OAAe;IAEf,MAAM,cAAc,GAAyC;QAC3D,MAAM,EAAE,UAAU,CAAC,GAAG;KACvB,CAAC;IACF,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACrC,cAAc,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,SAAS,EAAE;YACT,kBAAkB,EAAE;gBAClB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,cAAc;aAClC;SACF;KACF,CAAC;IAEF,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,aAAa,CAAC,GAAG,OAAO,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE5E,QAAQ,CAAC,0BAA0B,EAAE;QACnC,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;KAC7B,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,QAAQ,CAAC,kCAAkC,EAAE;QAChE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;KAC7B,CAAC,CAAC;IAEH,MAAM,SAAS,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAE/C,MAAM,YAAY,GAAG,GAAG,OAAO,sBAAsB,CAAC;IACtD,MAAM,eAAe,GAAG,gCAAgC,CACtD,YAAY,EACZ,yBAAyB,UAAU,CAAC,GAAG,EAAE,CAC1C,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fetch-schema.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-schema.spec.d.ts","sourceRoot":"","sources":["../../src/codegen/fetch-schema.spec.ts"],"names":[],"mappings":""}