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 @@
1
+ {"version":3,"file":"tree.spec.js","sourceRoot":"","sources":["../../src/core/tree.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ export type ConstructNode = {
2
+ readonly id: string;
3
+ readonly path: readonly string[];
4
+ readonly children: readonly ConstructNode[];
5
+ readonly metadata: ConstructMetadata;
6
+ };
7
+ export type ConstructMetadata = AppMetadata | StackMetadata | ResourceMetadata | ProviderMetadata | DataSourceMetadata | VariableMetadata | OutputMetadata | BackendMetadata | LocalMetadata | ModuleMetadata;
8
+ export type AppMetadata = {
9
+ readonly kind: "app";
10
+ readonly outdir: string;
11
+ readonly skipValidation: boolean;
12
+ readonly skipBackendValidation: boolean;
13
+ };
14
+ export type StackMetadata = {
15
+ readonly kind: "stack";
16
+ readonly stackName: string;
17
+ readonly dependencies: readonly string[];
18
+ };
19
+ export type ResourceMetadata = {
20
+ readonly kind: "resource";
21
+ readonly resource: ResourceDef;
22
+ };
23
+ export type ProviderMetadata = {
24
+ readonly kind: "provider";
25
+ readonly provider: ProviderDef;
26
+ };
27
+ export type DataSourceMetadata = {
28
+ readonly kind: "datasource";
29
+ readonly datasource: DataSourceDef;
30
+ };
31
+ export type VariableMetadata = {
32
+ readonly kind: "variable";
33
+ readonly variable: VariableDef;
34
+ };
35
+ export type OutputMetadata = {
36
+ readonly kind: "output";
37
+ readonly output: OutputDef;
38
+ };
39
+ export type BackendMetadata = {
40
+ readonly kind: "backend";
41
+ readonly backend: BackendDef;
42
+ };
43
+ export type LocalMetadata = {
44
+ readonly kind: "local";
45
+ readonly local: LocalDef;
46
+ };
47
+ export type ModuleMetadata = {
48
+ readonly kind: "module";
49
+ readonly module: ModuleDef;
50
+ };
51
+ export type ResourceDef = {
52
+ readonly terraformResourceType: string;
53
+ readonly provider?: string;
54
+ readonly dependsOn?: readonly string[];
55
+ readonly count?: number | string;
56
+ readonly forEach?: string;
57
+ readonly lifecycle?: LifecycleDef;
58
+ readonly provisioners?: readonly ProvisionerDef[];
59
+ readonly connection?: ConnectionDef;
60
+ readonly config: Record<string, unknown>;
61
+ readonly overrides?: Record<string, unknown>;
62
+ };
63
+ export type ProviderDef = {
64
+ readonly terraformProviderSource: string;
65
+ readonly version?: string;
66
+ readonly alias?: string;
67
+ readonly config: Record<string, unknown>;
68
+ };
69
+ export type DataSourceDef = {
70
+ readonly terraformResourceType: string;
71
+ readonly provider?: string;
72
+ readonly dependsOn?: readonly string[];
73
+ readonly count?: number | string;
74
+ readonly forEach?: string;
75
+ readonly config: Record<string, unknown>;
76
+ };
77
+ export type VariableDef = {
78
+ readonly type?: string;
79
+ readonly default?: unknown;
80
+ readonly description?: string;
81
+ readonly sensitive?: boolean;
82
+ readonly nullable?: boolean;
83
+ readonly validation?: readonly ValidationDef[];
84
+ };
85
+ export type OutputDef = {
86
+ readonly value: unknown;
87
+ readonly description?: string;
88
+ readonly sensitive?: boolean;
89
+ readonly dependsOn?: readonly string[];
90
+ readonly precondition?: ConditionDef;
91
+ };
92
+ export type BackendDef = {
93
+ readonly type: string;
94
+ readonly config: Record<string, unknown>;
95
+ };
96
+ export type LocalDef = {
97
+ readonly expression: unknown;
98
+ };
99
+ export type ModuleDef = {
100
+ readonly source: string;
101
+ readonly version?: string;
102
+ readonly providers?: Record<string, string>;
103
+ readonly dependsOn?: readonly string[];
104
+ readonly forEach?: string;
105
+ readonly count?: number | string;
106
+ readonly variables: Record<string, unknown>;
107
+ };
108
+ export type LifecycleDef = {
109
+ readonly createBeforeDestroy?: boolean;
110
+ readonly preventDestroy?: boolean;
111
+ readonly ignoreChanges?: readonly string[] | "all";
112
+ readonly replaceTriggeredBy?: readonly string[];
113
+ readonly precondition?: readonly ConditionDef[];
114
+ readonly postcondition?: readonly ConditionDef[];
115
+ };
116
+ export type ConditionDef = {
117
+ readonly condition: string;
118
+ readonly errorMessage: string;
119
+ };
120
+ export type ValidationDef = {
121
+ readonly condition: string;
122
+ readonly errorMessage: string;
123
+ };
124
+ export type ProvisionerDef = {
125
+ readonly type: "local-exec" | "remote-exec" | "file";
126
+ readonly config: Record<string, unknown>;
127
+ readonly when?: "create" | "destroy";
128
+ readonly onFailure?: "continue" | "fail";
129
+ readonly connection?: ConnectionDef;
130
+ };
131
+ export type ConnectionDef = {
132
+ readonly type?: "ssh" | "winrm";
133
+ readonly user?: string;
134
+ readonly password?: string;
135
+ readonly host?: string;
136
+ readonly port?: number;
137
+ readonly timeout?: string;
138
+ readonly scriptPath?: string;
139
+ readonly privateKey?: string;
140
+ readonly certificate?: string;
141
+ readonly agent?: boolean;
142
+ readonly agentIdentity?: string;
143
+ readonly hostKey?: string;
144
+ readonly targetPlatform?: "unix" | "windows";
145
+ readonly bastion?: BastionConnectionDef;
146
+ readonly https?: boolean;
147
+ readonly insecure?: boolean;
148
+ readonly useNtlm?: boolean;
149
+ readonly cacert?: string;
150
+ };
151
+ export type BastionConnectionDef = {
152
+ readonly host?: string;
153
+ readonly hostKey?: string;
154
+ readonly port?: number;
155
+ readonly user?: string;
156
+ readonly password?: string;
157
+ readonly privateKey?: string;
158
+ readonly certificate?: string;
159
+ };
160
+ export type ValidationError = {
161
+ readonly path: readonly string[];
162
+ readonly message: string;
163
+ readonly level: "error" | "warning" | "info";
164
+ };
165
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { ConstructNode, ValidationError } from "./types.js";
2
+ export declare function validateNode(node: ConstructNode): readonly ValidationError[];
3
+ export declare function detectCircularDependencies(tree: ConstructNode): readonly (readonly string[])[] | null;
4
+ export declare function hasErrors(errors: readonly ValidationError[]): boolean;
5
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/core/validate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEjE,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,eAAe,EAAE,CA8B5E;AAqJD,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,aAAa,GAClB,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GAAG,IAAI,CA+CvC;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAErE"}
@@ -0,0 +1,186 @@
1
+ import { getDescendants } from "./tree.js";
2
+ export function validateNode(node) {
3
+ const errors = [];
4
+ switch (node.metadata.kind) {
5
+ case "resource":
6
+ errors.push(...validateResource(node));
7
+ break;
8
+ case "provider":
9
+ errors.push(...validateProvider(node));
10
+ break;
11
+ case "variable":
12
+ errors.push(...validateVariable(node));
13
+ break;
14
+ case "output":
15
+ errors.push(...validateOutput(node));
16
+ break;
17
+ case "module":
18
+ errors.push(...validateModule(node));
19
+ break;
20
+ case "stack":
21
+ errors.push(...validateStack(node));
22
+ break;
23
+ case "app":
24
+ case "datasource":
25
+ case "backend":
26
+ case "local":
27
+ break;
28
+ }
29
+ return errors;
30
+ }
31
+ function validateResource(node) {
32
+ const errors = [];
33
+ if (node.metadata.kind !== "resource") {
34
+ return errors;
35
+ }
36
+ const { resource } = node.metadata;
37
+ if (!resource.terraformResourceType) {
38
+ errors.push({
39
+ path: node.path,
40
+ message: "Resource must have a terraformResourceType",
41
+ level: "error",
42
+ });
43
+ }
44
+ if (resource.count !== undefined && resource.forEach !== undefined) {
45
+ errors.push({
46
+ path: node.path,
47
+ message: "Resource cannot have both count and for_each",
48
+ level: "error",
49
+ });
50
+ }
51
+ return errors;
52
+ }
53
+ function validateProvider(node) {
54
+ const errors = [];
55
+ if (node.metadata.kind !== "provider") {
56
+ return errors;
57
+ }
58
+ const { provider } = node.metadata;
59
+ if (!provider.terraformProviderSource) {
60
+ errors.push({
61
+ path: node.path,
62
+ message: "Provider must have a terraformProviderSource",
63
+ level: "error",
64
+ });
65
+ }
66
+ return errors;
67
+ }
68
+ function validateVariable(node) {
69
+ const errors = [];
70
+ if (node.metadata.kind !== "variable") {
71
+ return errors;
72
+ }
73
+ const { variable } = node.metadata;
74
+ if (variable.validation) {
75
+ for (const validation of variable.validation) {
76
+ if (!validation.condition) {
77
+ errors.push({
78
+ path: node.path,
79
+ message: "Variable validation must have a condition",
80
+ level: "error",
81
+ });
82
+ }
83
+ if (!validation.errorMessage) {
84
+ errors.push({
85
+ path: node.path,
86
+ message: "Variable validation must have an errorMessage",
87
+ level: "error",
88
+ });
89
+ }
90
+ }
91
+ }
92
+ return errors;
93
+ }
94
+ function validateOutput(node) {
95
+ const errors = [];
96
+ if (node.metadata.kind !== "output") {
97
+ return errors;
98
+ }
99
+ const { output } = node.metadata;
100
+ if (output.value === undefined) {
101
+ errors.push({
102
+ path: node.path,
103
+ message: "Output must have a value",
104
+ level: "error",
105
+ });
106
+ }
107
+ return errors;
108
+ }
109
+ function validateModule(node) {
110
+ const errors = [];
111
+ if (node.metadata.kind !== "module") {
112
+ return errors;
113
+ }
114
+ const { module } = node.metadata;
115
+ if (!module.source) {
116
+ errors.push({
117
+ path: node.path,
118
+ message: "Module must have a source",
119
+ level: "error",
120
+ });
121
+ }
122
+ if (module.count !== undefined && module.forEach !== undefined) {
123
+ errors.push({
124
+ path: node.path,
125
+ message: "Module cannot have both count and for_each",
126
+ level: "error",
127
+ });
128
+ }
129
+ return errors;
130
+ }
131
+ function validateStack(node) {
132
+ const errors = [];
133
+ if (node.metadata.kind !== "stack") {
134
+ return errors;
135
+ }
136
+ const providers = getDescendants(node, "provider");
137
+ if (providers.length === 0) {
138
+ errors.push({
139
+ path: node.path,
140
+ message: "Stack has no providers configured",
141
+ level: "warning",
142
+ });
143
+ }
144
+ return errors;
145
+ }
146
+ export function detectCircularDependencies(tree) {
147
+ const stacks = getDescendants(tree, "stack");
148
+ const graph = new Map();
149
+ for (const stack of stacks) {
150
+ if (stack.metadata.kind === "stack") {
151
+ graph.set(stack.id, stack.metadata.dependencies);
152
+ }
153
+ }
154
+ const cycles = [];
155
+ const visited = new Set();
156
+ const inPath = new Set();
157
+ const path = [];
158
+ function dfs(nodeId) {
159
+ if (inPath.has(nodeId)) {
160
+ const cycleStart = path.indexOf(nodeId);
161
+ cycles.push([...path.slice(cycleStart), nodeId]);
162
+ return true;
163
+ }
164
+ if (visited.has(nodeId)) {
165
+ return false;
166
+ }
167
+ visited.add(nodeId);
168
+ inPath.add(nodeId);
169
+ path.push(nodeId);
170
+ const deps = graph.get(nodeId) ?? [];
171
+ for (const dep of deps) {
172
+ dfs(dep);
173
+ }
174
+ path.pop();
175
+ inPath.delete(nodeId);
176
+ return false;
177
+ }
178
+ for (const [nodeId] of graph) {
179
+ dfs(nodeId);
180
+ }
181
+ return cycles.length > 0 ? cycles : null;
182
+ }
183
+ export function hasErrors(errors) {
184
+ return errors.some((e) => e.level === "error");
185
+ }
186
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/core/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.spec.d.ts","sourceRoot":"","sources":["../../src/core/validate.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
1
+ import { describe, expect, test } from "bun:test";
2
+ import { createNode } from "./tree.js";
3
+ import { detectCircularDependencies, hasErrors, validateNode } from "./validate.js";
4
+ describe("validate", () => {
5
+ describe("validateNode", () => {
6
+ test("validates resource has terraformResourceType", () => {
7
+ const node = createNode("res", ["stack", "res"], {
8
+ kind: "resource",
9
+ resource: {
10
+ terraformResourceType: "",
11
+ config: {},
12
+ },
13
+ });
14
+ const errors = validateNode(node);
15
+ expect(errors.some((e) => e.message.includes("terraformResourceType"))).toBe(true);
16
+ });
17
+ test("validates resource cannot have both count and forEach", () => {
18
+ const node = createNode("res", ["stack", "res"], {
19
+ kind: "resource",
20
+ resource: {
21
+ terraformResourceType: "aws_instance",
22
+ count: 2,
23
+ forEach: "each.value",
24
+ config: {},
25
+ },
26
+ });
27
+ const errors = validateNode(node);
28
+ expect(errors.some((e) => e.message.includes("count and for_each"))).toBe(true);
29
+ });
30
+ test("validates provider has source", () => {
31
+ const node = createNode("prov", ["stack", "prov"], {
32
+ kind: "provider",
33
+ provider: {
34
+ terraformProviderSource: "",
35
+ config: {},
36
+ },
37
+ });
38
+ const errors = validateNode(node);
39
+ expect(errors.some((e) => e.message.includes("terraformProviderSource"))).toBe(true);
40
+ });
41
+ test("validates output has value", () => {
42
+ const node = createNode("out", ["stack", "out"], {
43
+ kind: "output",
44
+ output: {
45
+ value: undefined,
46
+ },
47
+ });
48
+ const errors = validateNode(node);
49
+ expect(errors.some((e) => e.message.includes("value"))).toBe(true);
50
+ });
51
+ test("validates module has source", () => {
52
+ const node = createNode("mod", ["stack", "mod"], {
53
+ kind: "module",
54
+ module: {
55
+ source: "",
56
+ variables: {},
57
+ },
58
+ });
59
+ const errors = validateNode(node);
60
+ expect(errors.some((e) => e.message.includes("source"))).toBe(true);
61
+ });
62
+ });
63
+ describe("detectCircularDependencies", () => {
64
+ test("detects circular dependency", () => {
65
+ const stackA = createNode("a", ["app", "a"], {
66
+ kind: "stack",
67
+ stackName: "a",
68
+ dependencies: ["b"],
69
+ });
70
+ const stackB = createNode("b", ["app", "b"], {
71
+ kind: "stack",
72
+ stackName: "b",
73
+ dependencies: ["a"],
74
+ });
75
+ const app = {
76
+ ...createNode("app", ["app"], {
77
+ kind: "app",
78
+ outdir: "out",
79
+ skipValidation: false,
80
+ skipBackendValidation: false,
81
+ }),
82
+ children: [stackA, stackB],
83
+ };
84
+ const cycles = detectCircularDependencies(app);
85
+ expect(cycles).not.toBeNull();
86
+ expect(cycles?.length).toBeGreaterThan(0);
87
+ });
88
+ test("returns null for no cycles", () => {
89
+ const stackA = createNode("a", ["app", "a"], {
90
+ kind: "stack",
91
+ stackName: "a",
92
+ dependencies: [],
93
+ });
94
+ const stackB = createNode("b", ["app", "b"], {
95
+ kind: "stack",
96
+ stackName: "b",
97
+ dependencies: ["a"],
98
+ });
99
+ const app = {
100
+ ...createNode("app", ["app"], {
101
+ kind: "app",
102
+ outdir: "out",
103
+ skipValidation: false,
104
+ skipBackendValidation: false,
105
+ }),
106
+ children: [stackA, stackB],
107
+ };
108
+ const cycles = detectCircularDependencies(app);
109
+ expect(cycles).toBeNull();
110
+ });
111
+ });
112
+ describe("hasErrors", () => {
113
+ test("returns true when errors exist", () => {
114
+ const errors = [{ path: [], message: "error", level: "error" }];
115
+ expect(hasErrors(errors)).toBe(true);
116
+ });
117
+ test("returns false for warnings only", () => {
118
+ const errors = [{ path: [], message: "warn", level: "warning" }];
119
+ expect(hasErrors(errors)).toBe(false);
120
+ });
121
+ test("returns false for empty array", () => {
122
+ expect(hasErrors([])).toBe(false);
123
+ });
124
+ });
125
+ });
126
+ //# sourceMappingURL=validate.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.spec.js","sourceRoot":"","sources":["../../src/core/validate.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { IConstruct } from "./construct.js";
2
+ export declare enum AnnotationMetadataEntryType {
3
+ INFO = "@tfts/info",
4
+ WARN = "@tfts/warn",
5
+ ERROR = "@tfts/error"
6
+ }
7
+ export declare const DISABLE_STACK_TRACE_IN_METADATA = "@tfts/disable_stack_trace_in_metadata";
8
+ export declare class Annotations {
9
+ private readonly scope;
10
+ static of(scope: IConstruct): Annotations;
11
+ private constructor();
12
+ addInfo(message: string): void;
13
+ addWarning(message: string): void;
14
+ addError(message: string): void;
15
+ private addMessage;
16
+ }
17
+ //# sourceMappingURL=annotations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../src/facade/annotations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,oBAAY,2BAA2B;IACrC,IAAI,eAAe;IACnB,IAAI,eAAe;IACnB,KAAK,gBAAgB;CACtB;AAED,eAAO,MAAM,+BAA+B,0CAA0C,CAAC;AAEvF,qBAAa,WAAW;IAKF,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJ1C,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW;IAIzC,OAAO;IAEP,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI/B,OAAO,CAAC,UAAU;CAGnB"}
@@ -0,0 +1,29 @@
1
+ export var AnnotationMetadataEntryType;
2
+ (function (AnnotationMetadataEntryType) {
3
+ AnnotationMetadataEntryType["INFO"] = "@tfts/info";
4
+ AnnotationMetadataEntryType["WARN"] = "@tfts/warn";
5
+ AnnotationMetadataEntryType["ERROR"] = "@tfts/error";
6
+ })(AnnotationMetadataEntryType || (AnnotationMetadataEntryType = {}));
7
+ export const DISABLE_STACK_TRACE_IN_METADATA = "@tfts/disable_stack_trace_in_metadata";
8
+ export class Annotations {
9
+ scope;
10
+ static of(scope) {
11
+ return new Annotations(scope);
12
+ }
13
+ constructor(scope) {
14
+ this.scope = scope;
15
+ }
16
+ addInfo(message) {
17
+ this.addMessage(AnnotationMetadataEntryType.INFO, message);
18
+ }
19
+ addWarning(message) {
20
+ this.addMessage(AnnotationMetadataEntryType.WARN, message);
21
+ }
22
+ addError(message) {
23
+ this.addMessage(AnnotationMetadataEntryType.ERROR, message);
24
+ }
25
+ addMessage(level, message) {
26
+ this.scope.node.addMetadata(level, message);
27
+ }
28
+ }
29
+ //# sourceMappingURL=annotations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/facade/annotations.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,2BAIX;AAJD,WAAY,2BAA2B;IACrC,kDAAmB,CAAA;IACnB,kDAAmB,CAAA;IACnB,oDAAqB,CAAA;AACvB,CAAC,EAJW,2BAA2B,KAA3B,2BAA2B,QAItC;AAED,MAAM,CAAC,MAAM,+BAA+B,GAAG,uCAAuC,CAAC;AAEvF,MAAM,OAAO,WAAW;IAKe;IAJrC,MAAM,CAAC,EAAE,CAAC,KAAiB;QACzB,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,YAAqC,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;IAAG,CAAC;IAE1D,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAED,QAAQ,CAAC,OAAe;QACtB,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAEO,UAAU,CAAC,KAAkC,EAAE,OAAe;QACpE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF"}
@@ -0,0 +1,51 @@
1
+ import { Construct } from "./construct.js";
2
+ import { type StackLike } from "./stack-registry.js";
3
+ type TerraformStack = StackLike;
4
+ export declare const CONTEXT_ENV = "CDKTF_CONTEXT_JSON";
5
+ export type AppConfig = {
6
+ readonly outdir?: string;
7
+ readonly stackTraces?: boolean;
8
+ readonly hclOutput?: boolean;
9
+ readonly context?: Record<string, unknown>;
10
+ readonly skipValidation?: boolean;
11
+ readonly skipBackendValidation?: boolean;
12
+ };
13
+ export type Manifest = {
14
+ readonly version: string;
15
+ readonly outdir: string;
16
+ readonly hclOutput: boolean;
17
+ stacks: Record<string, StackManifest>;
18
+ };
19
+ export type StackManifest = {
20
+ readonly name: string;
21
+ readonly constructPath: string;
22
+ readonly synthesizedStackPath: string;
23
+ readonly workingDirectory: string;
24
+ readonly annotations: Annotation[];
25
+ readonly dependencies: string[];
26
+ };
27
+ export type Annotation = {
28
+ readonly constructPath: string;
29
+ readonly level: "info" | "warning" | "error";
30
+ readonly message: string;
31
+ readonly stacktrace?: string[];
32
+ };
33
+ export declare class App extends Construct {
34
+ readonly outdir: string;
35
+ readonly hclOutput: boolean;
36
+ readonly targetStackId: string | undefined;
37
+ readonly skipValidation: boolean;
38
+ readonly skipBackendValidation: boolean;
39
+ readonly manifest: Manifest;
40
+ private _synthesized;
41
+ constructor(config?: AppConfig);
42
+ static asApp(x: unknown): App | null;
43
+ static of(construct: Construct): App | null;
44
+ synth(): void;
45
+ private asStack;
46
+ private loadContext;
47
+ private writeManifest;
48
+ crossStackReference(fromStack: TerraformStack, toStack: TerraformStack, identifier: string): string;
49
+ }
50
+ export {};
51
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/facade/app.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAG/D,KAAK,cAAc,GAAG,SAAS,CAAC;AAKhC,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC,CAAC;AAEF,qBAAa,GAAI,SAAQ,SAAS;IAChC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,SAAS,EAAE,OAAO,CAAC;IACnC,SAAgB,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,SAAgB,cAAc,EAAE,OAAO,CAAC;IACxC,SAAgB,qBAAqB,EAAE,OAAO,CAAC;IAC/C,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,GAAE,SAAc;IA8BlC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,GAAG,GAAG,IAAI;IAOpC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,GAAG,GAAG,IAAI;IAY3C,KAAK,IAAI,IAAI;IAgCb,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,aAAa;IASrB,mBAAmB,CACjB,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,MAAM,GACjB,MAAM;CAMV"}