@quadnix/octo 0.0.30 → 0.2.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 (383) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +117 -8
  3. package/dist/app.type.d.ts +277 -19
  4. package/dist/app.type.js +80 -9
  5. package/dist/app.type.js.map +1 -1
  6. package/dist/decorators/action.decorator.d.ts +10 -6
  7. package/dist/decorators/action.decorator.js +19 -6
  8. package/dist/decorators/action.decorator.js.map +1 -1
  9. package/dist/decorators/anchor.decorator.d.ts +12 -5
  10. package/dist/decorators/anchor.decorator.js +12 -5
  11. package/dist/decorators/anchor.decorator.js.map +1 -1
  12. package/dist/decorators/enable-hook.decorator.d.ts +1 -1
  13. package/dist/decorators/enable-hook.decorator.js +1 -1
  14. package/dist/decorators/factory.decorator.d.ts +18 -34
  15. package/dist/decorators/factory.decorator.js +18 -34
  16. package/dist/decorators/factory.decorator.js.map +1 -1
  17. package/dist/decorators/model.decorator.d.ts +4 -6
  18. package/dist/decorators/model.decorator.js +2 -7
  19. package/dist/decorators/model.decorator.js.map +1 -1
  20. package/dist/decorators/module.decorator.d.ts +16 -10
  21. package/dist/decorators/module.decorator.js +16 -10
  22. package/dist/decorators/module.decorator.js.map +1 -1
  23. package/dist/decorators/on-event.decorator.d.ts +7 -2
  24. package/dist/decorators/on-event.decorator.js +5 -0
  25. package/dist/decorators/on-event.decorator.js.map +1 -1
  26. package/dist/decorators/resource.decorator.d.ts +50 -1
  27. package/dist/decorators/resource.decorator.js +38 -1
  28. package/dist/decorators/resource.decorator.js.map +1 -1
  29. package/dist/decorators/validate.decorator.d.ts +15 -1
  30. package/dist/decorators/validate.decorator.js +15 -1
  31. package/dist/decorators/validate.decorator.js.map +1 -1
  32. package/dist/errors/container.error.d.ts +18 -0
  33. package/dist/errors/container.error.js +18 -0
  34. package/dist/errors/container.error.js.map +1 -1
  35. package/dist/errors/index.d.ts +1 -0
  36. package/dist/errors/index.js +1 -0
  37. package/dist/errors/index.js.map +1 -1
  38. package/dist/errors/module.error.d.ts +6 -0
  39. package/dist/errors/module.error.js +6 -0
  40. package/dist/errors/module.error.js.map +1 -1
  41. package/dist/errors/node.error.d.ts +56 -0
  42. package/dist/errors/node.error.js +56 -0
  43. package/dist/errors/node.error.js.map +1 -1
  44. package/dist/errors/schema.error.d.ts +14 -1
  45. package/dist/errors/schema.error.js +11 -1
  46. package/dist/errors/schema.error.js.map +1 -1
  47. package/dist/errors/terraform.error.d.ts +20 -0
  48. package/dist/errors/terraform.error.js +24 -0
  49. package/dist/errors/terraform.error.js.map +1 -0
  50. package/dist/errors/transaction.error.d.ts +93 -2
  51. package/dist/errors/transaction.error.js +83 -0
  52. package/dist/errors/transaction.error.js.map +1 -1
  53. package/dist/events/action.event.d.ts +8 -4
  54. package/dist/events/action.event.js +2 -4
  55. package/dist/events/action.event.js.map +1 -1
  56. package/dist/events/command.event.d.ts +43 -0
  57. package/dist/events/command.event.js +33 -0
  58. package/dist/events/command.event.js.map +1 -0
  59. package/dist/events/event.model.d.ts +26 -8
  60. package/dist/events/event.model.js +15 -7
  61. package/dist/events/event.model.js.map +1 -1
  62. package/dist/events/hook/commit.hook.event.d.ts +1 -7
  63. package/dist/events/hook/commit.hook.event.js +0 -6
  64. package/dist/events/hook/commit.hook.event.js.map +1 -1
  65. package/dist/events/hook/hook.event.d.ts +1 -3
  66. package/dist/events/hook/hook.event.js +0 -2
  67. package/dist/events/hook/hook.event.js.map +1 -1
  68. package/dist/events/hook/model.hook.event.d.ts +1 -7
  69. package/dist/events/hook/model.hook.event.js +0 -6
  70. package/dist/events/hook/model.hook.event.js.map +1 -1
  71. package/dist/events/hook/resource.hook.event.d.ts +1 -7
  72. package/dist/events/hook/resource.hook.event.js +0 -6
  73. package/dist/events/hook/resource.hook.event.js.map +1 -1
  74. package/dist/events/index.d.ts +5 -0
  75. package/dist/events/index.js +5 -0
  76. package/dist/events/index.js.map +1 -1
  77. package/dist/events/mode-result.event.d.ts +57 -0
  78. package/dist/events/mode-result.event.js +24 -0
  79. package/dist/events/mode-result.event.js.map +1 -0
  80. package/dist/events/mode.event.d.ts +61 -0
  81. package/dist/events/mode.event.js +32 -0
  82. package/dist/events/mode.event.js.map +1 -0
  83. package/dist/events/module.event.d.ts +7 -5
  84. package/dist/events/module.event.js +3 -4
  85. package/dist/events/module.event.js.map +1 -1
  86. package/dist/events/registration.event.d.ts +19 -15
  87. package/dist/events/registration.event.js +18 -14
  88. package/dist/events/registration.event.js.map +1 -1
  89. package/dist/events/serialization.event.d.ts +16 -13
  90. package/dist/events/serialization.event.js +15 -12
  91. package/dist/events/serialization.event.js.map +1 -1
  92. package/dist/events/state.event.d.ts +102 -0
  93. package/dist/events/state.event.js +69 -0
  94. package/dist/events/state.event.js.map +1 -0
  95. package/dist/events/terraform.event.d.ts +78 -0
  96. package/dist/events/terraform.event.js +55 -0
  97. package/dist/events/terraform.event.js.map +1 -0
  98. package/dist/events/transaction.event.d.ts +3 -40
  99. package/dist/events/transaction.event.js +1 -29
  100. package/dist/events/transaction.event.js.map +1 -1
  101. package/dist/functions/container/container.d.ts +54 -13
  102. package/dist/functions/container/container.js +64 -19
  103. package/dist/functions/container/container.js.map +1 -1
  104. package/dist/functions/container/test-container.d.ts +43 -29
  105. package/dist/functions/container/test-container.js +71 -43
  106. package/dist/functions/container/test-container.js.map +1 -1
  107. package/dist/functions/dependency/dependency.d.ts +84 -23
  108. package/dist/functions/dependency/dependency.js +84 -14
  109. package/dist/functions/dependency/dependency.js.map +1 -1
  110. package/dist/functions/diff/aggregate-resource-actions.d.ts +19 -0
  111. package/dist/functions/diff/aggregate-resource-actions.js +41 -0
  112. package/dist/functions/diff/aggregate-resource-actions.js.map +1 -0
  113. package/dist/functions/diff/diff-metadata.d.ts +21 -3
  114. package/dist/functions/diff/diff-metadata.js +18 -0
  115. package/dist/functions/diff/diff-metadata.js.map +1 -1
  116. package/dist/functions/diff/diff.d.ts +68 -7
  117. package/dist/functions/diff/diff.js +44 -3
  118. package/dist/functions/diff/diff.js.map +1 -1
  119. package/dist/functions/hook/commit.hook.d.ts +16 -1
  120. package/dist/functions/hook/commit.hook.js +21 -6
  121. package/dist/functions/hook/commit.hook.js.map +1 -1
  122. package/dist/functions/hook/model-action.hook.d.ts +16 -1
  123. package/dist/functions/hook/model-action.hook.js +21 -6
  124. package/dist/functions/hook/model-action.hook.js.map +1 -1
  125. package/dist/functions/hook/resource-action.hook.d.ts +16 -1
  126. package/dist/functions/hook/resource-action.hook.js +21 -6
  127. package/dist/functions/hook/resource-action.hook.js.map +1 -1
  128. package/dist/functions/node/node-action.abstract.d.ts +23 -2
  129. package/dist/functions/node/node-action.abstract.js +22 -8
  130. package/dist/functions/node/node-action.abstract.js.map +1 -1
  131. package/dist/functions/node/node.abstract.d.ts +56 -5
  132. package/dist/functions/node/node.abstract.js +106 -22
  133. package/dist/functions/node/node.abstract.js.map +1 -1
  134. package/dist/functions/node/node.interface.d.ts +3 -1
  135. package/dist/functions/schema/schema.d.ts +7 -0
  136. package/dist/functions/schema/schema.js +10 -1
  137. package/dist/functions/schema/schema.js.map +1 -1
  138. package/dist/index.d.ts +12 -6
  139. package/dist/index.js +9 -4
  140. package/dist/index.js.map +1 -1
  141. package/dist/index.type.d.ts +5 -0
  142. package/dist/index.type.js +2 -0
  143. package/dist/index.type.js.map +1 -0
  144. package/dist/main.d.ts +245 -14
  145. package/dist/main.js +377 -72
  146. package/dist/main.js.map +1 -1
  147. package/dist/models/account/account.model.d.ts +43 -7
  148. package/dist/models/account/account.model.js +56 -8
  149. package/dist/models/account/account.model.js.map +1 -1
  150. package/dist/models/account/account.schema.d.ts +13 -1
  151. package/dist/models/account/account.schema.js +12 -0
  152. package/dist/models/account/account.schema.js.map +1 -1
  153. package/dist/models/app/app.model.d.ts +13 -8
  154. package/dist/models/app/app.model.js +17 -32
  155. package/dist/models/app/app.model.js.map +1 -1
  156. package/dist/models/app/app.schema.d.ts +6 -0
  157. package/dist/models/app/app.schema.js +6 -0
  158. package/dist/models/app/app.schema.js.map +1 -1
  159. package/dist/models/deployment/deployment.model.d.ts +13 -1
  160. package/dist/models/deployment/deployment.model.js +16 -4
  161. package/dist/models/deployment/deployment.model.js.map +1 -1
  162. package/dist/models/deployment/deployment.schema.d.ts +6 -0
  163. package/dist/models/deployment/deployment.schema.js +6 -0
  164. package/dist/models/deployment/deployment.schema.js.map +1 -1
  165. package/dist/models/environment/environment.model.d.ts +15 -3
  166. package/dist/models/environment/environment.model.js +22 -10
  167. package/dist/models/environment/environment.model.js.map +1 -1
  168. package/dist/models/environment/environment.schema.d.ts +2 -0
  169. package/dist/models/environment/environment.schema.js +2 -0
  170. package/dist/models/environment/environment.schema.js.map +1 -1
  171. package/dist/models/execution/execution.model.d.ts +21 -3
  172. package/dist/models/execution/execution.model.js +47 -29
  173. package/dist/models/execution/execution.model.js.map +1 -1
  174. package/dist/models/execution/execution.schema.d.ts +11 -0
  175. package/dist/models/execution/execution.schema.js +11 -0
  176. package/dist/models/execution/execution.schema.js.map +1 -1
  177. package/dist/models/filesystem/filesystem.model.d.ts +27 -1
  178. package/dist/models/filesystem/filesystem.model.js +30 -4
  179. package/dist/models/filesystem/filesystem.model.js.map +1 -1
  180. package/dist/models/filesystem/filesystem.schema.d.ts +5 -0
  181. package/dist/models/filesystem/filesystem.schema.js +5 -0
  182. package/dist/models/filesystem/filesystem.schema.js.map +1 -1
  183. package/dist/models/image/image.model.d.ts +19 -5
  184. package/dist/models/image/image.model.js +25 -11
  185. package/dist/models/image/image.model.js.map +1 -1
  186. package/dist/models/image/image.schema.d.ts +8 -0
  187. package/dist/models/image/image.schema.js +8 -0
  188. package/dist/models/image/image.schema.js.map +1 -1
  189. package/dist/models/model-action.interface.d.ts +17 -4
  190. package/dist/models/model.abstract.d.ts +96 -1
  191. package/dist/models/model.abstract.js +107 -8
  192. package/dist/models/model.abstract.js.map +1 -1
  193. package/dist/models/model.interface.d.ts +3 -0
  194. package/dist/models/pipeline/pipeline.model.d.ts +14 -2
  195. package/dist/models/pipeline/pipeline.model.js +19 -7
  196. package/dist/models/pipeline/pipeline.model.js.map +1 -1
  197. package/dist/models/pipeline/pipeline.schema.d.ts +8 -0
  198. package/dist/models/pipeline/pipeline.schema.js +8 -0
  199. package/dist/models/pipeline/pipeline.schema.js.map +1 -1
  200. package/dist/models/region/region.model.d.ts +16 -1
  201. package/dist/models/region/region.model.js +19 -4
  202. package/dist/models/region/region.model.js.map +1 -1
  203. package/dist/models/region/region.schema.d.ts +6 -0
  204. package/dist/models/region/region.schema.js +6 -0
  205. package/dist/models/region/region.schema.js.map +1 -1
  206. package/dist/models/server/server.model.d.ts +15 -3
  207. package/dist/models/server/server.model.js +18 -6
  208. package/dist/models/server/server.model.js.map +1 -1
  209. package/dist/models/server/server.schema.d.ts +3 -1
  210. package/dist/models/server/server.schema.js +3 -1
  211. package/dist/models/server/server.schema.js.map +1 -1
  212. package/dist/models/service/service.model.d.ts +37 -6
  213. package/dist/models/service/service.model.js +65 -11
  214. package/dist/models/service/service.model.js.map +1 -1
  215. package/dist/models/service/service.schema.d.ts +48 -1
  216. package/dist/models/service/service.schema.js +56 -1
  217. package/dist/models/service/service.schema.js.map +1 -1
  218. package/dist/models/subnet/subnet.model.d.ts +27 -3
  219. package/dist/models/subnet/subnet.model.js +40 -16
  220. package/dist/models/subnet/subnet.model.js.map +1 -1
  221. package/dist/models/subnet/subnet.schema.d.ts +9 -0
  222. package/dist/models/subnet/subnet.schema.js +9 -0
  223. package/dist/models/subnet/subnet.schema.js.map +1 -1
  224. package/dist/modes/apply-transaction.d.ts +23 -0
  225. package/dist/modes/apply-transaction.js +25 -0
  226. package/dist/modes/apply-transaction.js.map +1 -0
  227. package/dist/modes/commit.mode.d.ts +54 -0
  228. package/dist/modes/commit.mode.js +235 -0
  229. package/dist/modes/commit.mode.js.map +1 -0
  230. package/dist/modes/generate.mode.d.ts +30 -0
  231. package/dist/modes/generate.mode.js +50 -0
  232. package/dist/modes/generate.mode.js.map +1 -0
  233. package/dist/modes/run-action.mode.d.ts +30 -0
  234. package/dist/modes/run-action.mode.js +140 -0
  235. package/dist/modes/run-action.mode.js.map +1 -0
  236. package/dist/modes/validate.mode.d.ts +186 -0
  237. package/dist/modes/validate.mode.js +558 -0
  238. package/dist/modes/validate.mode.js.map +1 -0
  239. package/dist/modules/module.abstract.d.ts +51 -0
  240. package/dist/modules/module.abstract.js +36 -0
  241. package/dist/modules/module.abstract.js.map +1 -1
  242. package/dist/modules/module.container.d.ts +43 -1
  243. package/dist/modules/module.container.js +77 -5
  244. package/dist/modules/module.container.js.map +1 -1
  245. package/dist/modules/test-module.container.d.ts +139 -25
  246. package/dist/modules/test-module.container.js +383 -199
  247. package/dist/modules/test-module.container.js.map +1 -1
  248. package/dist/overlays/anchor.abstract.d.ts +32 -1
  249. package/dist/overlays/anchor.abstract.js +42 -11
  250. package/dist/overlays/anchor.abstract.js.map +1 -1
  251. package/dist/overlays/anchor.schema.d.ts +21 -0
  252. package/dist/overlays/anchor.schema.js +21 -0
  253. package/dist/overlays/anchor.schema.js.map +1 -1
  254. package/dist/overlays/overlay-data.repository.d.ts +18 -0
  255. package/dist/overlays/overlay-data.repository.js +18 -0
  256. package/dist/overlays/overlay-data.repository.js.map +1 -1
  257. package/dist/overlays/overlay.abstract.d.ts +56 -1
  258. package/dist/overlays/overlay.abstract.js +79 -20
  259. package/dist/overlays/overlay.abstract.js.map +1 -1
  260. package/dist/overlays/overlay.schema.d.ts +20 -0
  261. package/dist/overlays/overlay.schema.js +20 -0
  262. package/dist/overlays/overlay.schema.js.map +1 -1
  263. package/dist/resources/resource-action.interface.d.ts +29 -3
  264. package/dist/resources/resource-data.repository.d.ts +63 -1
  265. package/dist/resources/resource-data.repository.js +94 -4
  266. package/dist/resources/resource-data.repository.js.map +1 -1
  267. package/dist/resources/resource.abstract.d.ts +163 -6
  268. package/dist/resources/resource.abstract.js +223 -59
  269. package/dist/resources/resource.abstract.js.map +1 -1
  270. package/dist/resources/resource.interface.d.ts +0 -2
  271. package/dist/resources/resource.schema.d.ts +39 -1
  272. package/dist/resources/resource.schema.js +38 -0
  273. package/dist/resources/resource.schema.js.map +1 -1
  274. package/dist/resources/terraform-resource.abstract.d.ts +44 -0
  275. package/dist/resources/terraform-resource.abstract.js +45 -0
  276. package/dist/resources/terraform-resource.abstract.js.map +1 -0
  277. package/dist/services/event/event.service.d.ts +32 -5
  278. package/dist/services/event/event.service.js +58 -16
  279. package/dist/services/event/event.service.js.map +1 -1
  280. package/dist/services/input/input.service.d.ts +82 -5
  281. package/dist/services/input/input.service.js +143 -12
  282. package/dist/services/input/input.service.js.map +1 -1
  283. package/dist/services/schema-translation/schema-translation.service.d.ts +9 -0
  284. package/dist/services/schema-translation/schema-translation.service.js +9 -0
  285. package/dist/services/schema-translation/schema-translation.service.js.map +1 -1
  286. package/dist/services/serialization/model/model-serialization.service.d.ts +25 -3
  287. package/dist/services/serialization/model/model-serialization.service.js +113 -62
  288. package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
  289. package/dist/services/serialization/resource/resource-serialization.service.d.ts +36 -6
  290. package/dist/services/serialization/resource/resource-serialization.service.js +77 -28
  291. package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
  292. package/dist/services/state-management/local.state-provider.d.ts +67 -4
  293. package/dist/services/state-management/local.state-provider.js +168 -41
  294. package/dist/services/state-management/local.state-provider.js.map +1 -1
  295. package/dist/services/state-management/remote.state-provider.d.ts +216 -0
  296. package/dist/services/state-management/remote.state-provider.js +645 -0
  297. package/dist/services/state-management/remote.state-provider.js.map +1 -0
  298. package/dist/services/state-management/state-management.service.d.ts +195 -17
  299. package/dist/services/state-management/state-management.service.js +259 -10
  300. package/dist/services/state-management/state-management.service.js.map +1 -1
  301. package/dist/services/state-management/state-provider.interface.d.ts +98 -3
  302. package/dist/services/state-management/state-provider.interface.js +14 -1
  303. package/dist/services/state-management/state-provider.interface.js.map +1 -1
  304. package/dist/services/state-management/terraform-state.service.d.ts +99 -0
  305. package/dist/services/state-management/terraform-state.service.js +197 -0
  306. package/dist/services/state-management/terraform-state.service.js.map +1 -0
  307. package/dist/services/state-management/test.state-provider.d.ts +42 -4
  308. package/dist/services/state-management/test.state-provider.js +77 -25
  309. package/dist/services/state-management/test.state-provider.js.map +1 -1
  310. package/dist/services/terraform/terraform.service.d.ts +480 -0
  311. package/dist/services/terraform/terraform.service.js +1082 -0
  312. package/dist/services/terraform/terraform.service.js.map +1 -0
  313. package/dist/services/terraform/terraform.type.d.ts +387 -0
  314. package/dist/services/terraform/terraform.type.js +579 -0
  315. package/dist/services/terraform/terraform.type.js.map +1 -0
  316. package/dist/services/transaction/transaction.service.d.ts +110 -10
  317. package/dist/services/transaction/transaction.service.js +570 -251
  318. package/dist/services/transaction/transaction.service.js.map +1 -1
  319. package/dist/services/validation/validation.service.d.ts +15 -3
  320. package/dist/services/validation/validation.service.js +12 -0
  321. package/dist/services/validation/validation.service.js.map +1 -1
  322. package/dist/utilities/array/array.utility.d.ts +3 -0
  323. package/dist/utilities/array/array.utility.js +3 -0
  324. package/dist/utilities/array/array.utility.js.map +1 -1
  325. package/dist/{functions → utilities}/diff/diff.utility.d.ts +19 -3
  326. package/dist/{functions → utilities}/diff/diff.utility.js +57 -41
  327. package/dist/utilities/diff/diff.utility.js.map +1 -0
  328. package/dist/utilities/file/file.utility.d.ts +16 -2
  329. package/dist/utilities/file/file.utility.js +23 -61
  330. package/dist/utilities/file/file.utility.js.map +1 -1
  331. package/dist/utilities/hcl/hcl.utility.d.ts +128 -0
  332. package/dist/utilities/hcl/hcl.utility.js +402 -0
  333. package/dist/utilities/hcl/hcl.utility.js.map +1 -0
  334. package/dist/utilities/http/http.utility.d.ts +57 -0
  335. package/dist/utilities/http/http.utility.js +98 -0
  336. package/dist/utilities/http/http.utility.js.map +1 -0
  337. package/dist/utilities/node/node.utility.d.ts +3 -0
  338. package/dist/utilities/node/node.utility.js +3 -0
  339. package/dist/utilities/node/node.utility.js.map +1 -1
  340. package/dist/utilities/object/object.utility.d.ts +12 -0
  341. package/dist/utilities/object/object.utility.js +12 -0
  342. package/dist/utilities/object/object.utility.js.map +1 -1
  343. package/dist/utilities/project/project.utility.d.ts +28 -0
  344. package/dist/utilities/project/project.utility.js +35 -0
  345. package/dist/utilities/project/project.utility.js.map +1 -0
  346. package/dist/utilities/string/string.utility.d.ts +41 -0
  347. package/dist/utilities/string/string.utility.js +65 -0
  348. package/dist/utilities/string/string.utility.js.map +1 -0
  349. package/dist/utilities/terraform/terraform.utility.d.ts +276 -0
  350. package/dist/utilities/terraform/terraform.utility.js +623 -0
  351. package/dist/utilities/terraform/terraform.utility.js.map +1 -0
  352. package/dist/utilities/test-helpers/test-classes.d.ts +36 -30
  353. package/dist/utilities/test-helpers/test-classes.js +38 -39
  354. package/dist/utilities/test-helpers/test-classes.js.map +1 -1
  355. package/dist/utilities/test-helpers/test-models.d.ts +8 -1
  356. package/dist/utilities/test-helpers/test-models.js +37 -12
  357. package/dist/utilities/test-helpers/test-models.js.map +1 -1
  358. package/dist/utilities/test-helpers/test-modes.d.ts +315 -0
  359. package/dist/utilities/test-helpers/test-modes.js +486 -0
  360. package/dist/utilities/test-helpers/test-modes.js.map +1 -0
  361. package/dist/utilities/test-helpers/test-modules.d.ts +47 -0
  362. package/dist/utilities/test-helpers/test-modules.js +85 -0
  363. package/dist/utilities/test-helpers/test-modules.js.map +1 -0
  364. package/dist/utilities/test-helpers/test-overlays.d.ts +20 -2
  365. package/dist/utilities/test-helpers/test-overlays.js +56 -6
  366. package/dist/utilities/test-helpers/test-overlays.js.map +1 -1
  367. package/dist/utilities/test-helpers/test-resources.d.ts +23 -3
  368. package/dist/utilities/test-helpers/test-resources.js +83 -23
  369. package/dist/utilities/test-helpers/test-resources.js.map +1 -1
  370. package/dist/utilities/validation/validation.utility.d.ts +24 -0
  371. package/dist/utilities/validation/validation.utility.js +24 -0
  372. package/dist/utilities/validation/validation.utility.js.map +1 -1
  373. package/package.json +12 -6
  374. package/dist/functions/diff/diff.utility.js.map +0 -1
  375. package/dist/services/capture/capture.service.d.ts +0 -19
  376. package/dist/services/capture/capture.service.js +0 -43
  377. package/dist/services/capture/capture.service.js.map +0 -1
  378. package/dist/services/state-management/local-encryption.state-provider.d.ts +0 -20
  379. package/dist/services/state-management/local-encryption.state-provider.js +0 -90
  380. package/dist/services/state-management/local-encryption.state-provider.js.map +0 -1
  381. package/dist/utilities/cidr/cidr.utility.d.ts +0 -10
  382. package/dist/utilities/cidr/cidr.utility.js +0 -51
  383. package/dist/utilities/cidr/cidr.utility.js.map +0 -1
@@ -0,0 +1,579 @@
1
+ /**
2
+ * The terraform variable holding the octo project root.
3
+ *
4
+ * A generated folder names files on the developer's disk relative to this variable rather than by
5
+ * absolute path, so the same intent renders the same text on every machine. Octo supplies the value
6
+ * as `TF_VAR_OCTO_PROJECT_ROOT` on every terragrunt command it runs.
7
+ */
8
+ export const PROJECT_ROOT_VARIABLE_NAME = 'OCTO_PROJECT_ROOT';
9
+ /**
10
+ * @internal
11
+ */
12
+ export function toHclNode(value) {
13
+ if (value instanceof HclExpression) {
14
+ return value;
15
+ }
16
+ if (Array.isArray(value)) {
17
+ return new ListHclNode(value.map(toHclNode));
18
+ }
19
+ if (value !== null && typeof value === 'object') {
20
+ return new MapHclNode(Object.entries(value).map(([k, v]) => [k, toHclNode(v)]));
21
+ }
22
+ return new LiteralHclNode(value);
23
+ }
24
+ /**
25
+ * A rendered terraform expression.
26
+ *
27
+ * You never construct one directly - {@link TerraformModuleScope}'s `raw()`, `jsonencode()`,
28
+ * `mapAttr()`, `type()`, and `getRef()` return them, and you pass them back as attribute values.
29
+ *
30
+ * @group Resources
31
+ */
32
+ export class HclExpression {
33
+ /**
34
+ * @internal
35
+ */
36
+ collectRefs(_into) { }
37
+ }
38
+ /**
39
+ * @internal
40
+ */
41
+ export class ExpressionHclNode extends HclExpression {
42
+ /**
43
+ * @internal
44
+ */
45
+ constructor(text) {
46
+ super();
47
+ this.text = text;
48
+ }
49
+ /**
50
+ * Renders the expression verbatim. e.g. `aws_vpc.my-vpc.id`.
51
+ */
52
+ render() {
53
+ return this.text;
54
+ }
55
+ }
56
+ /**
57
+ * @internal
58
+ */
59
+ export class InterpolatedStringHclNode extends HclExpression {
60
+ /**
61
+ * @internal
62
+ */
63
+ constructor(parts) {
64
+ super();
65
+ this.parts = parts;
66
+ }
67
+ /**
68
+ * @internal
69
+ */
70
+ collectRefs(into) {
71
+ this.parts.forEach((p) => {
72
+ if (p instanceof HclExpression) {
73
+ p.collectRefs(into);
74
+ }
75
+ });
76
+ }
77
+ /**
78
+ * Renders a quoted terraform string built from text parts and embedded `${...}` expressions,
79
+ * e.g. the `local-exec` command of an external resource wrapper:
80
+ * `"octo ... --input my-vpc.VpcId=${var.my_vpc_VpcId} > ..."`.
81
+ */
82
+ render(indent, context) {
83
+ const content = this.parts.map((p) => (typeof p === 'string' ? p : `\${${p.render(indent, context)}}`)).join('');
84
+ return `"${content}"`;
85
+ }
86
+ }
87
+ /**
88
+ * @internal
89
+ */
90
+ export class JsonEncodeHclNode extends HclExpression {
91
+ /**
92
+ * @internal
93
+ */
94
+ constructor(subject) {
95
+ super();
96
+ this.subject = subject;
97
+ }
98
+ /**
99
+ * @internal
100
+ */
101
+ collectRefs(into) {
102
+ const walk = (value) => {
103
+ if (value instanceof HclExpression) {
104
+ value.collectRefs(into);
105
+ }
106
+ else if (Array.isArray(value)) {
107
+ value.forEach(walk);
108
+ }
109
+ else if (value !== null && typeof value === 'object') {
110
+ Object.values(value).forEach(walk);
111
+ }
112
+ };
113
+ walk(this.subject);
114
+ }
115
+ /**
116
+ * Renders a `jsonencode({...})` call. The subject is a plain JS structure;
117
+ * leaf values may be {@link HclExpression} nodes, which render as expressions inside the encoded object.
118
+ */
119
+ render(currentIndent, context) {
120
+ const formatValue = (value, indent) => {
121
+ if (value instanceof HclExpression) {
122
+ return value.render(indent, context);
123
+ }
124
+ if (typeof value === 'string') {
125
+ return `"${value}"`;
126
+ }
127
+ if (typeof value !== 'object' || value === null) {
128
+ return String(value);
129
+ }
130
+ const nextIndent = indent + context.step;
131
+ if (Array.isArray(value)) {
132
+ if (value.length === 0) {
133
+ return '[]';
134
+ }
135
+ const items = value.map((v) => formatValue(v, nextIndent)).join(', ');
136
+ return `[${items}]`;
137
+ }
138
+ const entries = Object.entries(value).map(([k, v]) => {
139
+ const key = /^[a-zA-Z_][a-zA-Z0-9_-]*$/.test(k) ? k : `"${k}"`;
140
+ return `${nextIndent}${key} = ${formatValue(v, nextIndent)}`;
141
+ });
142
+ return `{\n${entries.join('\n')}\n${indent}}`;
143
+ };
144
+ const innerIndent = currentIndent + context.step;
145
+ if (Array.isArray(this.subject)) {
146
+ if (this.subject.length === 0) {
147
+ return 'jsonencode([])';
148
+ }
149
+ const items = this.subject.map((v) => `${innerIndent}${formatValue(v, innerIndent)}`).join(',\n');
150
+ return `jsonencode([\n${items}\n${currentIndent}])`;
151
+ }
152
+ const body = Object.entries(this.subject)
153
+ .map(([k, v]) => `${innerIndent}${k} = ${formatValue(v, innerIndent)}`)
154
+ .join('\n');
155
+ return `jsonencode({\n${body}\n${currentIndent}})`;
156
+ }
157
+ }
158
+ /**
159
+ * @internal
160
+ */
161
+ export class ListHclNode extends HclExpression {
162
+ /**
163
+ * @internal
164
+ */
165
+ constructor(items) {
166
+ super();
167
+ this.items = items;
168
+ }
169
+ /**
170
+ * @internal
171
+ */
172
+ collectRefs(into) {
173
+ this.items.forEach((i) => i.collectRefs(into));
174
+ }
175
+ /**
176
+ * Renders a `[a, b, c]` list value in a single-line;
177
+ * items render with the current indent.
178
+ */
179
+ render(indent, context) {
180
+ return `[${this.items.map((i) => i.render(indent, context)).join(', ')}]`;
181
+ }
182
+ }
183
+ /**
184
+ * @internal
185
+ */
186
+ export class LiteralHclNode extends HclExpression {
187
+ /**
188
+ * @internal
189
+ */
190
+ constructor(value) {
191
+ super();
192
+ this.value = value;
193
+ }
194
+ /**
195
+ * Renders string with quotes, other values verbatim.
196
+ */
197
+ render() {
198
+ return typeof this.value === 'string' ? `"${this.value}"` : `${this.value}`;
199
+ }
200
+ }
201
+ /**
202
+ * @internal
203
+ */
204
+ export class MapHclNode extends HclExpression {
205
+ /**
206
+ * @internal
207
+ */
208
+ constructor(entries) {
209
+ super();
210
+ this.entries = entries;
211
+ }
212
+ /**
213
+ * @internal
214
+ */
215
+ collectRefs(into) {
216
+ this.entries.forEach(([, v]) => v.collectRefs(into));
217
+ }
218
+ /**
219
+ * Renders a `{ key = value }` map value, one entry per line.
220
+ * This is a map ATTRIBUTE (`key = { }`),
221
+ * not a block (`key { }`) - see {@link TerraformService.mapAttr} for the distinction.
222
+ */
223
+ render(indent, context) {
224
+ const nextIndent = indent + context.step;
225
+ const entries = this.entries.map(([k, v]) => `${nextIndent}${k} = ${v.render(nextIndent, context)}`);
226
+ return `{\n${entries.join('\n')}\n${indent}}`;
227
+ }
228
+ }
229
+ /**
230
+ * @internal
231
+ */
232
+ export class MapHclNodeRaw extends HclExpression {
233
+ /**
234
+ * @internal
235
+ */
236
+ constructor(lines) {
237
+ super();
238
+ this.lines = lines;
239
+ }
240
+ /**
241
+ * Renders a brace-wrapped body with pre-rendered lines,
242
+ * used for `required_providers` entries where the `source =` alignment is part of the expected output.
243
+ */
244
+ render(indent, context) {
245
+ const nextIndent = indent + context.step;
246
+ return `{\n${this.lines.map((l) => `${nextIndent}${l}`).join('\n')}\n${indent}}`;
247
+ }
248
+ }
249
+ /**
250
+ * This is the deferred cross-reference primitive in the terraform layer.
251
+ * When one resource needs another resource's output,
252
+ * we can't write the final HCL until every resource has been registered
253
+ * to find out if the producer is in the same module folder or different one.
254
+ * It is a placeholder that stands in for "resource X's response key Y" and gets resolved to HCL at the very end.
255
+ *
256
+ * - `entireResponse`: A normal RefHclNode targets one key (vpc-1.VpcId).
257
+ * When true, the ref points at the producer's entire response map rather than a single key (and `key` is empty).
258
+ * Used to feed an external resource's whole result into a child external resource's inputs.
259
+ * The map is wrapped in `jsonencode(...)` so it survives as a single string argument/trigger value.
260
+ */
261
+ export class RefHclNode extends HclExpression {
262
+ /**
263
+ * @internal
264
+ */
265
+ constructor(resourceId, key, entireResponse = false) {
266
+ super();
267
+ this.resourceId = resourceId;
268
+ this.key = key;
269
+ this.entireResponse = entireResponse;
270
+ }
271
+ /**
272
+ * @internal
273
+ */
274
+ collectRefs(into) {
275
+ into.push(this);
276
+ }
277
+ /**
278
+ * Renders a reference to a resource's response key whose final form is unknown until render time:
279
+ * same folder → the producer's native expression; other folder → a `var.*` wired through terragrunt.
280
+ * This is what `getRef()` returns. Resolution happens via {@link RenderContext.resolveRef}.
281
+ */
282
+ render(_indent, context) {
283
+ const resolved = context.resolveRef(this);
284
+ return this.entireResponse ? `jsonencode(${resolved})` : resolved;
285
+ }
286
+ }
287
+ /**
288
+ * @internal
289
+ */
290
+ export class TypeHclNode extends HclExpression {
291
+ /**
292
+ * @internal
293
+ */
294
+ constructor(schema) {
295
+ super();
296
+ this.schema = schema;
297
+ }
298
+ /**
299
+ * Renders a terraform type expression for `variable` declarations:
300
+ * - primitives render bare (`string`),
301
+ * - arrays render as `list(...)`,
302
+ * - objects as `object({ ... })`.
303
+ */
304
+ render(currentIndent, context) {
305
+ const formatType = (value, indent) => {
306
+ if (value instanceof HclExpression) {
307
+ return value.render(indent, context);
308
+ }
309
+ const primitives = ['any', 'bool', 'number', 'string'];
310
+ if (primitives.includes(value)) {
311
+ return value;
312
+ }
313
+ if (Array.isArray(value)) {
314
+ return `list(${formatType(value[0], indent)})`;
315
+ }
316
+ if (typeof value === 'object' && value !== null) {
317
+ const nextIndent = indent + context.step;
318
+ const fields = Object.entries(value).map(([k, v]) => {
319
+ return `${nextIndent}${k} = ${formatType(v, nextIndent)}`;
320
+ });
321
+ return `object({\n${fields.join('\n')}\n${indent}})`;
322
+ }
323
+ return String(value);
324
+ };
325
+ return formatType(this.schema, currentIndent);
326
+ }
327
+ }
328
+ /**
329
+ * @internal
330
+ */
331
+ export class TerraformAttribute {
332
+ /**
333
+ * @internal
334
+ */
335
+ constructor(key, value) {
336
+ this.key = key;
337
+ this.value = value;
338
+ }
339
+ /**
340
+ * @internal
341
+ */
342
+ collectRefs(into) {
343
+ this.value.collectRefs(into);
344
+ }
345
+ /**
346
+ * Renders `<indent><key> = <value>`.
347
+ */
348
+ render(indent, context) {
349
+ return `${indent}${this.key} = ${this.value.render(indent, context)}`;
350
+ }
351
+ }
352
+ /**
353
+ * A nested `<type> { ... }` block inside a resource or data source.
354
+ *
355
+ * @group Resources
356
+ */
357
+ export class TerraformBlock {
358
+ /**
359
+ * @internal
360
+ */
361
+ constructor(type) {
362
+ this.type = type;
363
+ this.children = [];
364
+ }
365
+ /**
366
+ * Sets an argument on this block. The value is converted to HCL, so a plain JS value works as
367
+ * well as an {@link HclExpression}.
368
+ */
369
+ attribute(key, value) {
370
+ this.children.push(new TerraformAttribute(key, toHclNode(value)));
371
+ }
372
+ /**
373
+ * Opens a nested block, e.g. `image_scanning_configuration { ... }`.
374
+ */
375
+ block(type) {
376
+ const newBlock = new TerraformBlock(type);
377
+ this.children.push(newBlock);
378
+ return newBlock;
379
+ }
380
+ /**
381
+ * @internal
382
+ */
383
+ collectRefs(into) {
384
+ this.children.forEach((c) => c.collectRefs(into));
385
+ }
386
+ /**
387
+ * Renders a generic `<type> { ...children... }` block, e.g. `provider "aws"` or `triggers`.
388
+ * Prints the block with children one indent step deeper.
389
+ */
390
+ render(indent, context) {
391
+ const childIndent = indent + context.step;
392
+ const childrenRendered = this.children.map((child) => child.render(childIndent, context));
393
+ return `${indent}${this.type} {\n${childrenRendered.join('\n')}\n${indent}}`;
394
+ }
395
+ }
396
+ /**
397
+ * A `data "<type>" "<name>"` source, as returned by {@link TerraformModuleScope.addTerraformData}.
398
+ *
399
+ * @group Resources
400
+ */
401
+ export class TerraformData {
402
+ /**
403
+ * @internal
404
+ */
405
+ get address() {
406
+ return `data.${this.type}.${this.name}`;
407
+ }
408
+ /**
409
+ * @internal
410
+ */
411
+ constructor(type, name) {
412
+ this.type = type;
413
+ this.name = name;
414
+ this.children = [];
415
+ }
416
+ /**
417
+ * Sets an argument on this block. The value is converted to HCL, so a plain JS value works as
418
+ * well as an {@link HclExpression}.
419
+ */
420
+ attribute(key, value) {
421
+ this.children.push(new TerraformAttribute(key, toHclNode(value)));
422
+ }
423
+ /**
424
+ * Opens a nested block, e.g. `image_scanning_configuration { ... }`.
425
+ */
426
+ block(type) {
427
+ const newBlock = new TerraformBlock(type);
428
+ this.children.push(newBlock);
429
+ return newBlock;
430
+ }
431
+ /**
432
+ * @internal
433
+ */
434
+ collectRefs(into) {
435
+ this.children.forEach((c) => c.collectRefs(into));
436
+ }
437
+ /**
438
+ * Returns an expression referencing an attribute of this data source.
439
+ */
440
+ ref(attribute) {
441
+ return new ExpressionHclNode(`${this.address}.${attribute}`);
442
+ }
443
+ /**
444
+ * Renders a `data "<type>" "<name>" { ... }` source.
445
+ * E.g. `data.external.my-name { ... }`
446
+ */
447
+ render(context) {
448
+ const childrenRendered = this.children.map((child) => child.render(context.step, context));
449
+ return `data "${this.type}" "${this.name}" {\n${childrenRendered.join('\n')}\n}`;
450
+ }
451
+ }
452
+ /**
453
+ * @internal
454
+ */
455
+ export class TerraformOutput {
456
+ /**
457
+ * @internal
458
+ */
459
+ constructor(name, value, sensitive = false) {
460
+ this.name = name;
461
+ this.value = value;
462
+ this.sensitive = sensitive;
463
+ }
464
+ /**
465
+ * Renders an `output "<name>" { value = ... }` block. Marks the output `sensitive = true`
466
+ * when it carries a secret, which Terraform requires for any root output containing sensitive data.
467
+ */
468
+ render(context) {
469
+ const body = [`${context.step}value = ${this.value.render(context.step, context)}`];
470
+ if (this.sensitive) {
471
+ body.push(`${context.step}sensitive = true`);
472
+ }
473
+ return `output "${this.name}" {\n${body.join('\n')}\n}`;
474
+ }
475
+ }
476
+ /**
477
+ * A `resource "<type>" "<name>"` block, as returned by
478
+ * {@link OctoTerraformResourceScope.addTerraformResource}.
479
+ *
480
+ * @group Resources
481
+ */
482
+ export class TerraformResource {
483
+ /**
484
+ * The terraform address of this resource, `<type>.<name>`. Interpolate it to reference an
485
+ * attribute terraform only knows after an apply.
486
+ */
487
+ get address() {
488
+ return `${this.type}.${this.name}`;
489
+ }
490
+ /**
491
+ * @internal
492
+ */
493
+ constructor(type, name, intraDependsOn) {
494
+ this.type = type;
495
+ this.name = name;
496
+ this.intraDependsOn = intraDependsOn;
497
+ this.children = [];
498
+ }
499
+ /**
500
+ * Sets an argument on this block. The value is converted to HCL, so a plain JS value works as
501
+ * well as an {@link HclExpression}.
502
+ */
503
+ attribute(key, value) {
504
+ this.children.push(new TerraformAttribute(key, toHclNode(value)));
505
+ }
506
+ /**
507
+ * Opens a nested block, e.g. `image_scanning_configuration { ... }`.
508
+ */
509
+ block(type) {
510
+ const newBlock = new TerraformBlock(type);
511
+ this.children.push(newBlock);
512
+ return newBlock;
513
+ }
514
+ /**
515
+ * @internal
516
+ */
517
+ collectRefs(into) {
518
+ this.children.forEach((c) => c.collectRefs(into));
519
+ }
520
+ /**
521
+ * Renders a `resource "<type>" "<name>" { ... }` block.
522
+ *
523
+ * There are 3 types of dependencies a terraform resource can have - intra, same folder parent, cross folder parent.
524
+ * - A cross folder parent is represented using TerraGrunt's dependency block - no depends_on needed.
525
+ * - `parentDependsOn` carries the same folder addresses of the octo resource's explicit parents
526
+ * derived in wiring phase. These are dependencies that cannot be captured by attribute references alone.
527
+ * E.g. between vpc and igw.
528
+ * - intra-resource dependencies are between two terraform resources produced by the same octo resource.
529
+ * E.g. between s3 bucket and s3 policy.
530
+ *
531
+ * The parentDependsOn and intraDependsOn are merged into one `depends_on` list.
532
+ */
533
+ render(context, parentDependsOn = []) {
534
+ const childrenRendered = this.children.map((child) => child.render(context.step, context));
535
+ const dependsOn = [...parentDependsOn, ...this.intraDependsOn];
536
+ const dependsOnRendered = dependsOn.length > 0 ? `${context.step}depends_on = [${dependsOn.join(', ')}]` : undefined;
537
+ return `resource "${this.type}" "${this.name}" {\n${childrenRendered.join('\n')}${dependsOnRendered ? `\n\n${dependsOnRendered}` : ''}\n}`;
538
+ }
539
+ }
540
+ /**
541
+ * A module input variable, as returned by {@link TerraformModuleScope.variable}.
542
+ *
543
+ * @group Resources
544
+ */
545
+ export class TerraformVariable {
546
+ /**
547
+ * Returns the `var.<name>` expression for consuming this variable.
548
+ */
549
+ get ref() {
550
+ return new ExpressionHclNode(`var.${this.name}`);
551
+ }
552
+ /**
553
+ * @internal
554
+ */
555
+ constructor(name, typeExpression, options) {
556
+ this.name = name;
557
+ this.typeExpression = typeExpression;
558
+ this.options = options;
559
+ }
560
+ /**
561
+ * @internal
562
+ */
563
+ collectRefs(into) {
564
+ this.typeExpression.collectRefs(into);
565
+ }
566
+ /**
567
+ * Renders a `variable "<name>" { type, default, sensitive }` declaration (user-defined variables).
568
+ */
569
+ render(context) {
570
+ const body = [];
571
+ body.push(`${context.step}type = ${this.typeExpression.render(context.step, context)}`);
572
+ body.push(`${context.step}default = ${toHclNode(this.options.default).render(context.step, context)}`);
573
+ if (this.options.sensitive) {
574
+ body.push(`${context.step}sensitive = true`);
575
+ }
576
+ return `variable "${this.name}" {\n${body.join('\n')}\n}`;
577
+ }
578
+ }
579
+ //# sourceMappingURL=terraform.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terraform.type.js","sourceRoot":"","sources":["../../../src/services/terraform/terraform.type.ts"],"names":[],"mappings":"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"}