tfts 0.2.13 → 0.3.1

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 +3 -0
  11. package/dist/cli/main.d.ts.map +1 -0
  12. package/dist/cli/main.js +86 -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":"generator.js","sourceRoot":"","sources":["../../src/codegen/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.spec.d.ts","sourceRoot":"","sources":["../../src/codegen/generator.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,387 @@
1
+ import { describe, expect, test } from "bun:test";
2
+ import { generateProviderBindings } from "./generator.js";
3
+ describe("generateProviderBindings", () => {
4
+ const mockSchema = {
5
+ format_version: "1.0",
6
+ provider_schemas: {
7
+ "registry.terraform.io/hashicorp/test": {
8
+ provider: {
9
+ block: {
10
+ attributes: {
11
+ region: { type: "string", optional: true },
12
+ },
13
+ },
14
+ },
15
+ resource_schemas: {
16
+ test_instance: {
17
+ version: 0,
18
+ block: {
19
+ attributes: {
20
+ name: { type: "string", required: true },
21
+ id: { type: "string", computed: true },
22
+ },
23
+ },
24
+ },
25
+ test_bucket_object: {
26
+ version: 0,
27
+ block: {
28
+ attributes: {
29
+ bucket: { type: "string", required: true },
30
+ key: { type: "string", required: true },
31
+ },
32
+ },
33
+ },
34
+ },
35
+ data_source_schemas: {
36
+ test_instance: {
37
+ version: 0,
38
+ block: {
39
+ attributes: {
40
+ id: { type: "string", required: true },
41
+ name: { type: "string", computed: true },
42
+ },
43
+ },
44
+ },
45
+ },
46
+ },
47
+ },
48
+ };
49
+ const constraint = {
50
+ fqn: "hashicorp/test",
51
+ namespace: "hashicorp",
52
+ name: "test",
53
+ version: undefined,
54
+ };
55
+ test("generates files with lib/{kebab-name}/index.ts structure", () => {
56
+ const result = generateProviderBindings(constraint, mockSchema);
57
+ expect(result.isOk()).toBe(true);
58
+ const files = result._unsafeUnwrap();
59
+ const paths = files.map((f) => f.path);
60
+ expect(paths).toContain("providers/hashicorp/test/lib/provider/index.ts");
61
+ expect(paths).toContain("providers/hashicorp/test/lib/instance/index.ts");
62
+ expect(paths).toContain("providers/hashicorp/test/lib/bucket-object/index.ts");
63
+ expect(paths).toContain("providers/hashicorp/test/lib/data-test-instance/index.ts");
64
+ });
65
+ test("generates namespace exports in index.ts", () => {
66
+ const result = generateProviderBindings(constraint, mockSchema);
67
+ expect(result.isOk()).toBe(true);
68
+ const files = result._unsafeUnwrap();
69
+ const indexFile = files.find((f) => f.path === "providers/hashicorp/test/index.ts");
70
+ expect(indexFile).toBeDefined();
71
+ const content = indexFile.content;
72
+ expect(content).toContain('export * from "./lib/provider/index.js"');
73
+ expect(content).toContain('export * as instance from "./lib/instance/index.js"');
74
+ expect(content).toContain('export * as bucketObject from "./lib/bucket-object/index.js"');
75
+ expect(content).toContain('export * as dataTestInstance from "./lib/data-test-instance/index.js"');
76
+ });
77
+ test("imports from tfts", () => {
78
+ const result = generateProviderBindings(constraint, mockSchema);
79
+ expect(result.isOk()).toBe(true);
80
+ const files = result._unsafeUnwrap();
81
+ for (const file of files) {
82
+ expect(file.content).not.toContain('from "cdktf"');
83
+ if (file.content.includes("TerraformProvider") ||
84
+ file.content.includes("TerraformResource")) {
85
+ expect(file.content).toContain('from "tfts"');
86
+ }
87
+ }
88
+ });
89
+ test("generates provider class correctly", () => {
90
+ const result = generateProviderBindings(constraint, mockSchema);
91
+ expect(result.isOk()).toBe(true);
92
+ const files = result._unsafeUnwrap();
93
+ const providerFile = files.find((f) => f.path === "providers/hashicorp/test/lib/provider/index.ts");
94
+ expect(providerFile).toBeDefined();
95
+ const content = providerFile.content;
96
+ expect(content).toContain("export class TestProvider extends TerraformProvider");
97
+ expect(content).toContain('terraformProviderSource: "hashicorp/test"');
98
+ });
99
+ test("generates resource class correctly", () => {
100
+ const result = generateProviderBindings(constraint, mockSchema);
101
+ expect(result.isOk()).toBe(true);
102
+ const files = result._unsafeUnwrap();
103
+ const resourceFile = files.find((f) => f.path === "providers/hashicorp/test/lib/instance/index.ts");
104
+ expect(resourceFile).toBeDefined();
105
+ const content = resourceFile.content;
106
+ expect(content).toContain("export class Instance extends TerraformResource");
107
+ expect(content).toContain('terraformResourceType: "test_instance"');
108
+ });
109
+ test("generates data source class with Data prefix and full resource type name", () => {
110
+ const result = generateProviderBindings(constraint, mockSchema);
111
+ expect(result.isOk()).toBe(true);
112
+ const files = result._unsafeUnwrap();
113
+ const dataFile = files.find((f) => f.path === "providers/hashicorp/test/lib/data-test-instance/index.ts");
114
+ expect(dataFile).toBeDefined();
115
+ const content = dataFile.content;
116
+ expect(content).toContain("export class DataTestInstance extends TerraformDataSource");
117
+ });
118
+ test("generates ComplexList for computed nested blocks", () => {
119
+ const schemaWithComputedBlock = {
120
+ format_version: "1.0",
121
+ provider_schemas: {
122
+ "registry.terraform.io/hashicorp/test": {
123
+ provider: { block: {} },
124
+ resource_schemas: {
125
+ test_service: {
126
+ version: 0,
127
+ block: {
128
+ attributes: {
129
+ name: { type: "string", required: true },
130
+ },
131
+ block_types: {
132
+ status: {
133
+ nesting_mode: "list",
134
+ block: {
135
+ attributes: {
136
+ url: { type: "string", computed: true },
137
+ ready: { type: "bool", computed: true },
138
+ },
139
+ },
140
+ },
141
+ },
142
+ },
143
+ },
144
+ },
145
+ },
146
+ },
147
+ };
148
+ const result = generateProviderBindings(constraint, schemaWithComputedBlock);
149
+ expect(result.isOk()).toBe(true);
150
+ const files = result._unsafeUnwrap();
151
+ const serviceFile = files.find((f) => f.path === "providers/hashicorp/test/lib/service/index.ts");
152
+ expect(serviceFile).toBeDefined();
153
+ const content = serviceFile.content;
154
+ expect(content).toContain("class ServiceStatusList extends ComplexList");
155
+ expect(content).toContain("get(index: number): ServiceStatusOutputReference");
156
+ expect(content).toContain("class ServiceStatusOutputReference extends ComplexObject");
157
+ expect(content).toContain("get url(): string");
158
+ expect(content).toContain("get ready(): boolean");
159
+ expect(content).toContain("get status(): ServiceStatusList");
160
+ });
161
+ test("generates ComplexList for computed attributes with list of objects", () => {
162
+ const schemaWithComputedAttr = {
163
+ format_version: "1.0",
164
+ provider_schemas: {
165
+ "registry.terraform.io/hashicorp/test": {
166
+ provider: { block: {} },
167
+ resource_schemas: {
168
+ test_run_service: {
169
+ version: 0,
170
+ block: {
171
+ attributes: {
172
+ name: { type: "string", required: true },
173
+ status: {
174
+ type: ["list", ["object", { url: "string", ready: "bool" }]],
175
+ computed: true,
176
+ },
177
+ },
178
+ },
179
+ },
180
+ },
181
+ },
182
+ },
183
+ };
184
+ const result = generateProviderBindings(constraint, schemaWithComputedAttr);
185
+ expect(result.isOk()).toBe(true);
186
+ const files = result._unsafeUnwrap();
187
+ const serviceFile = files.find((f) => f.path === "providers/hashicorp/test/lib/run-service/index.ts");
188
+ expect(serviceFile).toBeDefined();
189
+ const content = serviceFile.content;
190
+ expect(content).toContain("class RunServiceStatusList extends ComplexList");
191
+ expect(content).toContain("get(index: number): RunServiceStatusOutputReference");
192
+ expect(content).toContain("class RunServiceStatusOutputReference extends ComplexObject");
193
+ expect(content).toContain("get url(): string");
194
+ expect(content).toContain("get ready(): boolean");
195
+ expect(content).toContain("get status(): RunServiceStatusList");
196
+ expect(content).not.toContain("readonly status?:");
197
+ });
198
+ test("generates config getters for required/optional attributes", () => {
199
+ const schema = {
200
+ format_version: "1.0",
201
+ provider_schemas: {
202
+ "registry.terraform.io/hashicorp/test": {
203
+ provider: { block: {} },
204
+ resource_schemas: {
205
+ test_resource: {
206
+ version: 0,
207
+ block: {
208
+ attributes: {
209
+ name: { type: "string", required: true },
210
+ description: { type: "string", optional: true },
211
+ count: { type: "number", optional: true },
212
+ enabled: { type: "bool", optional: true },
213
+ id: { type: "string", computed: true },
214
+ },
215
+ },
216
+ },
217
+ },
218
+ },
219
+ },
220
+ };
221
+ const result = generateProviderBindings({ namespace: "hashicorp", name: "test", fqn: "hashicorp/test", version: "1.0.0" }, schema);
222
+ expect(result.isOk()).toBe(true);
223
+ const files = result._unsafeUnwrap();
224
+ const resourceFile = files.find((f) => f.path === "providers/hashicorp/test/lib/resource/index.ts");
225
+ expect(resourceFile).toBeDefined();
226
+ const content = resourceFile.content;
227
+ expect(content).toContain("get name(): string {");
228
+ expect(content).toContain('return this.getStringAttribute("name");');
229
+ expect(content).toContain("get description(): string {");
230
+ expect(content).toContain('return this.getStringAttribute("description");');
231
+ expect(content).toContain("get count(): number {");
232
+ expect(content).toContain('return this.getNumberAttribute("count");');
233
+ expect(content).toContain("get enabled(): boolean {");
234
+ expect(content).toContain('return this.getBooleanAttribute("enabled");');
235
+ expect(content).toContain("get id(): string {");
236
+ });
237
+ test("generates single OutputReference for blocks with max_items=1", () => {
238
+ const schema = {
239
+ format_version: "1.0",
240
+ provider_schemas: {
241
+ "registry.terraform.io/hashicorp/test": {
242
+ provider: { block: {} },
243
+ resource_schemas: {
244
+ test_function: {
245
+ version: 0,
246
+ block: {
247
+ attributes: {
248
+ name: { type: "string", required: true },
249
+ },
250
+ block_types: {
251
+ service_config: {
252
+ nesting_mode: "list",
253
+ max_items: 1,
254
+ block: {
255
+ attributes: {
256
+ service: { type: "string", computed: true },
257
+ uri: { type: "string", computed: true },
258
+ },
259
+ },
260
+ },
261
+ labels: {
262
+ nesting_mode: "list",
263
+ block: {
264
+ attributes: {
265
+ key: { type: "string", required: true },
266
+ value: { type: "string", required: true },
267
+ },
268
+ },
269
+ },
270
+ },
271
+ },
272
+ },
273
+ },
274
+ },
275
+ },
276
+ };
277
+ const result = generateProviderBindings({ namespace: "hashicorp", name: "test", fqn: "hashicorp/test", version: "1.0.0" }, schema);
278
+ expect(result.isOk()).toBe(true);
279
+ const files = result._unsafeUnwrap();
280
+ const resourceFile = files.find((f) => f.path === "providers/hashicorp/test/lib/function/index.ts");
281
+ expect(resourceFile).toBeDefined();
282
+ const content = resourceFile.content;
283
+ expect(content).toContain("get serviceConfig(): FunctionServiceConfigOutputReference");
284
+ expect(content).not.toContain("FunctionServiceConfigList");
285
+ expect(content).toContain("readonly labels?: Labels[];");
286
+ expect(content).toContain("class FunctionLabelsOutputReference extends ComplexObject");
287
+ expect(content).toContain("class FunctionLabelsList extends ComplexList");
288
+ });
289
+ test("generates toTerraform functions that filter unknown properties", () => {
290
+ const schema = {
291
+ format_version: "1.0",
292
+ provider_schemas: {
293
+ "registry.terraform.io/hashicorp/test": {
294
+ provider: { block: {} },
295
+ resource_schemas: {
296
+ test_service: {
297
+ version: 0,
298
+ block: {
299
+ attributes: {
300
+ name: { type: "string", required: true },
301
+ },
302
+ block_types: {
303
+ config: {
304
+ nesting_mode: "list",
305
+ max_items: 1,
306
+ block: {
307
+ attributes: {
308
+ timeout: { type: "number", optional: true },
309
+ enabled: { type: "bool", optional: true },
310
+ },
311
+ block_types: {
312
+ nested: {
313
+ nesting_mode: "list",
314
+ block: {
315
+ attributes: {
316
+ key: { type: "string", required: true },
317
+ },
318
+ },
319
+ },
320
+ },
321
+ },
322
+ },
323
+ },
324
+ },
325
+ },
326
+ },
327
+ },
328
+ },
329
+ };
330
+ const result = generateProviderBindings({ namespace: "hashicorp", name: "test", fqn: "hashicorp/test", version: "1.0.0" }, schema);
331
+ expect(result.isOk()).toBe(true);
332
+ const files = result._unsafeUnwrap();
333
+ const resourceFile = files.find((f) => f.path === "providers/hashicorp/test/lib/service/index.ts");
334
+ expect(resourceFile).toBeDefined();
335
+ const content = resourceFile.content;
336
+ expect(content).toContain("function configToTerraform(");
337
+ expect(content).toContain("timeout: config?.timeout,");
338
+ expect(content).toContain("enabled: config?.enabled,");
339
+ expect(content).toContain("nested: config?.nested?.map(configNestedToTerraform),");
340
+ expect(content).toContain("function configNestedToTerraform(");
341
+ expect(content).toContain("key: config?.key,");
342
+ expect(content).toContain("config: configToTerraform(this._config),");
343
+ });
344
+ test("generates config and synthesizeAttributes for empty blocks (blocks with only computed attrs)", () => {
345
+ const schema = {
346
+ format_version: "1.0",
347
+ provider_schemas: {
348
+ "registry.terraform.io/hashicorp/test": {
349
+ provider: { block: {} },
350
+ resource_schemas: {
351
+ test_field: {
352
+ version: 0,
353
+ block: {
354
+ attributes: {
355
+ name: { type: "string", required: true },
356
+ },
357
+ block_types: {
358
+ ttl_config: {
359
+ nesting_mode: "list",
360
+ max_items: 1,
361
+ block: {
362
+ attributes: {
363
+ state: { type: "string", computed: true },
364
+ },
365
+ },
366
+ },
367
+ },
368
+ },
369
+ },
370
+ },
371
+ },
372
+ },
373
+ };
374
+ const result = generateProviderBindings({ namespace: "hashicorp", name: "test", fqn: "hashicorp/test", version: "1.0.0" }, schema);
375
+ expect(result.isOk()).toBe(true);
376
+ const files = result._unsafeUnwrap();
377
+ const resourceFile = files.find((f) => f.path === "providers/hashicorp/test/lib/field/index.ts");
378
+ expect(resourceFile).toBeDefined();
379
+ const content = resourceFile.content;
380
+ expect(content).toContain("readonly ttlConfig?: TtlConfig;");
381
+ expect(content).toContain("private _ttlConfig?: TtlConfig;");
382
+ expect(content).toContain("this._ttlConfig = config.ttlConfig;");
383
+ expect(content).toContain("ttl_config: ttlConfigToTerraform(this._ttlConfig),");
384
+ expect(content).toContain("function ttlConfigToTerraform(");
385
+ });
386
+ });
387
+ //# sourceMappingURL=generator.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.spec.js","sourceRoot":"","sources":["../../src/codegen/generator.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from "./fetch-schema.js";
2
+ export * from "./generator.js";
3
+ export * from "./schema.js";
4
+ export * from "./type-mapper.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./fetch-schema.js";
2
+ export * from "./generator.js";
3
+ export * from "./schema.js";
4
+ export * from "./type-mapper.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,46 @@
1
+ export type AttributeType = "string" | "number" | "bool" | "dynamic" | ["list", AttributeType] | ["set", AttributeType] | ["map", AttributeType] | ["object", Record<string, AttributeType>] | ["tuple", AttributeType[]];
2
+ export type Attribute = {
3
+ type?: AttributeType;
4
+ description?: string;
5
+ required?: boolean;
6
+ optional?: boolean;
7
+ computed?: boolean;
8
+ sensitive?: boolean;
9
+ deprecated?: boolean;
10
+ };
11
+ export type BlockType = {
12
+ nesting_mode: "single" | "list" | "set" | "map";
13
+ block: Block;
14
+ min_items?: number;
15
+ max_items?: number;
16
+ };
17
+ export type Block = {
18
+ attributes?: Record<string, Attribute>;
19
+ block_types?: Record<string, BlockType>;
20
+ description?: string;
21
+ deprecated?: boolean;
22
+ };
23
+ export type ResourceSchema = {
24
+ version: number;
25
+ block: Block;
26
+ };
27
+ export type ProviderSchema = {
28
+ provider?: {
29
+ block: Block;
30
+ };
31
+ resource_schemas?: Record<string, ResourceSchema>;
32
+ data_source_schemas?: Record<string, ResourceSchema>;
33
+ };
34
+ export type TerraformSchema = {
35
+ format_version: string;
36
+ provider_schemas?: Record<string, ProviderSchema>;
37
+ };
38
+ export declare function parseTerraformSchema(data: unknown): TerraformSchema;
39
+ export type ProviderConstraint = {
40
+ namespace: string;
41
+ name: string;
42
+ version?: string;
43
+ fqn: string;
44
+ };
45
+ export declare function parseProviderConstraint(spec: string): ProviderConstraint;
46
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/codegen/schema.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GACrB,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,SAAS,GACT,CAAC,MAAM,EAAE,aAAa,CAAC,GACvB,CAAC,KAAK,EAAE,aAAa,CAAC,GACtB,CAAC,KAAK,EAAE,aAAa,CAAC,GACtB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,GACzC,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;AAE/B,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAChD,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACtD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACnD,CAAC;AA0DF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAEnE;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAaxE"}
@@ -0,0 +1,64 @@
1
+ import { z } from "zod";
2
+ const AttributeTypeSchema = z.lazy(() => z.union([
3
+ z.literal("string"),
4
+ z.literal("number"),
5
+ z.literal("bool"),
6
+ z.literal("dynamic"),
7
+ z.tuple([z.literal("list"), AttributeTypeSchema]),
8
+ z.tuple([z.literal("set"), AttributeTypeSchema]),
9
+ z.tuple([z.literal("map"), AttributeTypeSchema]),
10
+ z.tuple([z.literal("object"), z.record(z.string(), AttributeTypeSchema)]),
11
+ z.tuple([z.literal("tuple"), z.array(AttributeTypeSchema)]),
12
+ ]));
13
+ const AttributeSchema = z.object({
14
+ type: AttributeTypeSchema.optional(),
15
+ description: z.string().optional(),
16
+ required: z.boolean().optional(),
17
+ optional: z.boolean().optional(),
18
+ computed: z.boolean().optional(),
19
+ sensitive: z.boolean().optional(),
20
+ deprecated: z.boolean().optional(),
21
+ });
22
+ const BlockSchema = z.lazy(() => z.object({
23
+ attributes: z.record(z.string(), AttributeSchema).optional(),
24
+ block_types: z.record(z.string(), BlockTypeSchema).optional(),
25
+ description: z.string().optional(),
26
+ deprecated: z.boolean().optional(),
27
+ }));
28
+ const BlockTypeSchema = z.object({
29
+ nesting_mode: z.enum(["single", "list", "set", "map"]),
30
+ block: BlockSchema,
31
+ min_items: z.number().optional(),
32
+ max_items: z.number().optional(),
33
+ });
34
+ const ResourceSchemaSchema = z.object({
35
+ version: z.number(),
36
+ block: BlockSchema,
37
+ });
38
+ const ProviderSchemaSchema = z.object({
39
+ provider: z.object({ block: BlockSchema }).optional(),
40
+ resource_schemas: z.record(z.string(), ResourceSchemaSchema).optional(),
41
+ data_source_schemas: z.record(z.string(), ResourceSchemaSchema).optional(),
42
+ });
43
+ const TerraformSchemaValidator = z.object({
44
+ format_version: z.string(),
45
+ provider_schemas: z.record(z.string(), ProviderSchemaSchema).optional(),
46
+ });
47
+ export function parseTerraformSchema(data) {
48
+ return TerraformSchemaValidator.parse(data);
49
+ }
50
+ export function parseProviderConstraint(spec) {
51
+ const atIndex = spec.indexOf("@");
52
+ const fullName = atIndex === -1 ? spec : spec.slice(0, atIndex);
53
+ const version = atIndex === -1 ? undefined : spec.slice(atIndex + 1);
54
+ const parts = fullName.split("/");
55
+ const namespace = parts.length > 1 ? (parts[0] ?? "hashicorp") : "hashicorp";
56
+ const name = parts.length > 1 ? (parts[1] ?? fullName) : fullName;
57
+ return {
58
+ namespace,
59
+ name,
60
+ version,
61
+ fqn: `${namespace}/${name}`,
62
+ };
63
+ }
64
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/codegen/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Attribute, AttributeType, Block, BlockType } from "./schema.js";
2
+ export declare function attributeTypeToTS(type: AttributeType | undefined): string;
3
+ export declare function attributeToConfigProperty(name: string, attr: Attribute): string;
4
+ export declare function blockToConfigProperty(name: string, block: BlockType): string;
5
+ export declare function blockToInterfaceName(name: string): string;
6
+ export declare function safeName(name: string): string;
7
+ export declare function safeCamelName(name: string): string;
8
+ export declare function toPascalCase(str: string): string;
9
+ export declare function toCamelCase(str: string): string;
10
+ export declare function generateBlockInterface(name: string, block: Block): string;
11
+ //# sourceMappingURL=type-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-mapper.d.ts","sourceRoot":"","sources":["../../src/codegen/type-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE9E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CA+BzE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAM/E;AAOD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAO5E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AA0CD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ7C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAiBzE"}