@quadnix/octo 0.0.30 → 0.1.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 (362) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +25 -3
  3. package/dist/app.type.d.ts +143 -4
  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 +1 -1
  18. package/dist/decorators/model.decorator.js +1 -1
  19. package/dist/decorators/module.decorator.d.ts +16 -10
  20. package/dist/decorators/module.decorator.js +16 -10
  21. package/dist/decorators/module.decorator.js.map +1 -1
  22. package/dist/decorators/on-event.decorator.d.ts +5 -0
  23. package/dist/decorators/on-event.decorator.js +5 -0
  24. package/dist/decorators/on-event.decorator.js.map +1 -1
  25. package/dist/decorators/validate.decorator.d.ts +15 -1
  26. package/dist/decorators/validate.decorator.js +15 -1
  27. package/dist/decorators/validate.decorator.js.map +1 -1
  28. package/dist/errors/container.error.d.ts +18 -0
  29. package/dist/errors/container.error.js +18 -0
  30. package/dist/errors/container.error.js.map +1 -1
  31. package/dist/errors/index.d.ts +1 -0
  32. package/dist/errors/index.js +1 -0
  33. package/dist/errors/index.js.map +1 -1
  34. package/dist/errors/module.error.d.ts +6 -0
  35. package/dist/errors/module.error.js +6 -0
  36. package/dist/errors/module.error.js.map +1 -1
  37. package/dist/errors/node.error.d.ts +56 -0
  38. package/dist/errors/node.error.js +56 -0
  39. package/dist/errors/node.error.js.map +1 -1
  40. package/dist/errors/schema.error.d.ts +6 -0
  41. package/dist/errors/schema.error.js +6 -0
  42. package/dist/errors/schema.error.js.map +1 -1
  43. package/dist/errors/terraform.error.d.ts +19 -0
  44. package/dist/errors/terraform.error.js +23 -0
  45. package/dist/errors/terraform.error.js.map +1 -0
  46. package/dist/errors/transaction.error.d.ts +61 -0
  47. package/dist/errors/transaction.error.js +61 -0
  48. package/dist/errors/transaction.error.js.map +1 -1
  49. package/dist/events/action.event.d.ts +0 -2
  50. package/dist/events/action.event.js +0 -2
  51. package/dist/events/action.event.js.map +1 -1
  52. package/dist/events/event.model.d.ts +21 -5
  53. package/dist/events/event.model.js +11 -5
  54. package/dist/events/event.model.js.map +1 -1
  55. package/dist/events/hook/commit.hook.event.d.ts +0 -6
  56. package/dist/events/hook/commit.hook.event.js +0 -6
  57. package/dist/events/hook/commit.hook.event.js.map +1 -1
  58. package/dist/events/hook/hook.event.d.ts +0 -2
  59. package/dist/events/hook/hook.event.js +0 -2
  60. package/dist/events/hook/hook.event.js.map +1 -1
  61. package/dist/events/hook/model.hook.event.d.ts +0 -6
  62. package/dist/events/hook/model.hook.event.js +0 -6
  63. package/dist/events/hook/model.hook.event.js.map +1 -1
  64. package/dist/events/hook/resource.hook.event.d.ts +0 -6
  65. package/dist/events/hook/resource.hook.event.js +0 -6
  66. package/dist/events/hook/resource.hook.event.js.map +1 -1
  67. package/dist/events/index.d.ts +3 -0
  68. package/dist/events/index.js +3 -0
  69. package/dist/events/index.js.map +1 -1
  70. package/dist/events/mode-result.event.d.ts +57 -0
  71. package/dist/events/mode-result.event.js +24 -0
  72. package/dist/events/mode-result.event.js.map +1 -0
  73. package/dist/events/mode.event.d.ts +57 -0
  74. package/dist/events/mode.event.js +32 -0
  75. package/dist/events/mode.event.js.map +1 -0
  76. package/dist/events/module.event.d.ts +0 -2
  77. package/dist/events/module.event.js +0 -2
  78. package/dist/events/module.event.js.map +1 -1
  79. package/dist/events/registration.event.d.ts +18 -14
  80. package/dist/events/registration.event.js +18 -14
  81. package/dist/events/registration.event.js.map +1 -1
  82. package/dist/events/serialization.event.d.ts +15 -12
  83. package/dist/events/serialization.event.js +15 -12
  84. package/dist/events/serialization.event.js.map +1 -1
  85. package/dist/events/terraform.event.d.ts +42 -0
  86. package/dist/events/terraform.event.js +31 -0
  87. package/dist/events/terraform.event.js.map +1 -0
  88. package/dist/events/transaction.event.d.ts +0 -37
  89. package/dist/events/transaction.event.js +0 -28
  90. package/dist/events/transaction.event.js.map +1 -1
  91. package/dist/functions/container/container.d.ts +54 -13
  92. package/dist/functions/container/container.js +63 -18
  93. package/dist/functions/container/container.js.map +1 -1
  94. package/dist/functions/container/test-container.d.ts +43 -29
  95. package/dist/functions/container/test-container.js +71 -43
  96. package/dist/functions/container/test-container.js.map +1 -1
  97. package/dist/functions/dependency/dependency.d.ts +82 -8
  98. package/dist/functions/dependency/dependency.js +80 -14
  99. package/dist/functions/dependency/dependency.js.map +1 -1
  100. package/dist/functions/diff/aggregate-resource-actions.d.ts +19 -0
  101. package/dist/functions/diff/aggregate-resource-actions.js +41 -0
  102. package/dist/functions/diff/aggregate-resource-actions.js.map +1 -0
  103. package/dist/functions/diff/diff-metadata.d.ts +21 -3
  104. package/dist/functions/diff/diff-metadata.js +18 -0
  105. package/dist/functions/diff/diff-metadata.js.map +1 -1
  106. package/dist/functions/diff/diff.d.ts +55 -1
  107. package/dist/functions/diff/diff.js +44 -3
  108. package/dist/functions/diff/diff.js.map +1 -1
  109. package/dist/functions/diff/diff.utility.d.ts +17 -2
  110. package/dist/functions/diff/diff.utility.js +53 -38
  111. package/dist/functions/diff/diff.utility.js.map +1 -1
  112. package/dist/functions/hook/commit.hook.d.ts +16 -1
  113. package/dist/functions/hook/commit.hook.js +21 -6
  114. package/dist/functions/hook/commit.hook.js.map +1 -1
  115. package/dist/functions/hook/model-action.hook.d.ts +16 -1
  116. package/dist/functions/hook/model-action.hook.js +21 -6
  117. package/dist/functions/hook/model-action.hook.js.map +1 -1
  118. package/dist/functions/hook/resource-action.hook.d.ts +16 -1
  119. package/dist/functions/hook/resource-action.hook.js +21 -6
  120. package/dist/functions/hook/resource-action.hook.js.map +1 -1
  121. package/dist/functions/node/node-action.abstract.d.ts +23 -0
  122. package/dist/functions/node/node-action.abstract.js +20 -0
  123. package/dist/functions/node/node-action.abstract.js.map +1 -1
  124. package/dist/functions/node/node.abstract.d.ts +56 -5
  125. package/dist/functions/node/node.abstract.js +85 -12
  126. package/dist/functions/node/node.abstract.js.map +1 -1
  127. package/dist/functions/node/node.interface.d.ts +1 -0
  128. package/dist/functions/schema/schema.d.ts +7 -0
  129. package/dist/functions/schema/schema.js +9 -0
  130. package/dist/functions/schema/schema.js.map +1 -1
  131. package/dist/index.d.ts +5 -1
  132. package/dist/index.js +4 -1
  133. package/dist/index.js.map +1 -1
  134. package/dist/main.d.ts +244 -14
  135. package/dist/main.js +361 -72
  136. package/dist/main.js.map +1 -1
  137. package/dist/models/account/account.model.d.ts +37 -7
  138. package/dist/models/account/account.model.js +40 -8
  139. package/dist/models/account/account.model.js.map +1 -1
  140. package/dist/models/account/account.schema.d.ts +13 -1
  141. package/dist/models/account/account.schema.js +12 -0
  142. package/dist/models/account/account.schema.js.map +1 -1
  143. package/dist/models/app/app.model.d.ts +16 -1
  144. package/dist/models/app/app.model.js +19 -4
  145. package/dist/models/app/app.model.js.map +1 -1
  146. package/dist/models/app/app.schema.d.ts +6 -0
  147. package/dist/models/app/app.schema.js +6 -0
  148. package/dist/models/app/app.schema.js.map +1 -1
  149. package/dist/models/deployment/deployment.model.d.ts +13 -1
  150. package/dist/models/deployment/deployment.model.js +16 -4
  151. package/dist/models/deployment/deployment.model.js.map +1 -1
  152. package/dist/models/deployment/deployment.schema.d.ts +2 -0
  153. package/dist/models/deployment/deployment.schema.js +2 -0
  154. package/dist/models/deployment/deployment.schema.js.map +1 -1
  155. package/dist/models/environment/environment.model.d.ts +13 -1
  156. package/dist/models/environment/environment.model.js +20 -8
  157. package/dist/models/environment/environment.model.js.map +1 -1
  158. package/dist/models/environment/environment.schema.d.ts +2 -0
  159. package/dist/models/environment/environment.schema.js +2 -0
  160. package/dist/models/environment/environment.schema.js.map +1 -1
  161. package/dist/models/execution/execution.model.d.ts +20 -2
  162. package/dist/models/execution/execution.model.js +46 -28
  163. package/dist/models/execution/execution.model.js.map +1 -1
  164. package/dist/models/execution/execution.schema.d.ts +11 -0
  165. package/dist/models/execution/execution.schema.js +11 -0
  166. package/dist/models/execution/execution.schema.js.map +1 -1
  167. package/dist/models/filesystem/filesystem.model.d.ts +27 -1
  168. package/dist/models/filesystem/filesystem.model.js +30 -4
  169. package/dist/models/filesystem/filesystem.model.js.map +1 -1
  170. package/dist/models/filesystem/filesystem.schema.d.ts +5 -0
  171. package/dist/models/filesystem/filesystem.schema.js +5 -0
  172. package/dist/models/filesystem/filesystem.schema.js.map +1 -1
  173. package/dist/models/image/image.model.d.ts +17 -4
  174. package/dist/models/image/image.model.js +20 -7
  175. package/dist/models/image/image.model.js.map +1 -1
  176. package/dist/models/image/image.schema.d.ts +8 -0
  177. package/dist/models/image/image.schema.js +8 -0
  178. package/dist/models/image/image.schema.js.map +1 -1
  179. package/dist/models/model-action.interface.d.ts +17 -4
  180. package/dist/models/model.abstract.d.ts +96 -1
  181. package/dist/models/model.abstract.js +106 -7
  182. package/dist/models/model.abstract.js.map +1 -1
  183. package/dist/models/model.interface.d.ts +3 -0
  184. package/dist/models/pipeline/pipeline.model.d.ts +13 -1
  185. package/dist/models/pipeline/pipeline.model.js +18 -6
  186. package/dist/models/pipeline/pipeline.model.js.map +1 -1
  187. package/dist/models/pipeline/pipeline.schema.d.ts +8 -0
  188. package/dist/models/pipeline/pipeline.schema.js +8 -0
  189. package/dist/models/pipeline/pipeline.schema.js.map +1 -1
  190. package/dist/models/region/region.model.d.ts +16 -1
  191. package/dist/models/region/region.model.js +19 -4
  192. package/dist/models/region/region.model.js.map +1 -1
  193. package/dist/models/region/region.schema.d.ts +6 -0
  194. package/dist/models/region/region.schema.js +6 -0
  195. package/dist/models/region/region.schema.js.map +1 -1
  196. package/dist/models/server/server.model.d.ts +13 -1
  197. package/dist/models/server/server.model.js +16 -4
  198. package/dist/models/server/server.model.js.map +1 -1
  199. package/dist/models/server/server.schema.d.ts +3 -1
  200. package/dist/models/server/server.schema.js +3 -1
  201. package/dist/models/server/server.schema.js.map +1 -1
  202. package/dist/models/service/service.model.d.ts +15 -1
  203. package/dist/models/service/service.model.js +15 -1
  204. package/dist/models/service/service.model.js.map +1 -1
  205. package/dist/models/service/service.schema.d.ts +4 -1
  206. package/dist/models/service/service.schema.js +4 -1
  207. package/dist/models/service/service.schema.js.map +1 -1
  208. package/dist/models/subnet/subnet.model.d.ts +27 -3
  209. package/dist/models/subnet/subnet.model.js +40 -16
  210. package/dist/models/subnet/subnet.model.js.map +1 -1
  211. package/dist/models/subnet/subnet.schema.d.ts +9 -0
  212. package/dist/models/subnet/subnet.schema.js +9 -0
  213. package/dist/models/subnet/subnet.schema.js.map +1 -1
  214. package/dist/modes/apply-transaction.d.ts +23 -0
  215. package/dist/modes/apply-transaction.js +25 -0
  216. package/dist/modes/apply-transaction.js.map +1 -0
  217. package/dist/modes/commit.mode.d.ts +54 -0
  218. package/dist/modes/commit.mode.js +235 -0
  219. package/dist/modes/commit.mode.js.map +1 -0
  220. package/dist/modes/generate.mode.d.ts +29 -0
  221. package/dist/modes/generate.mode.js +49 -0
  222. package/dist/modes/generate.mode.js.map +1 -0
  223. package/dist/modes/run-action.mode.d.ts +30 -0
  224. package/dist/modes/run-action.mode.js +140 -0
  225. package/dist/modes/run-action.mode.js.map +1 -0
  226. package/dist/modes/validate.mode.d.ts +162 -0
  227. package/dist/modes/validate.mode.js +480 -0
  228. package/dist/modes/validate.mode.js.map +1 -0
  229. package/dist/modules/module.abstract.d.ts +51 -0
  230. package/dist/modules/module.abstract.js +36 -0
  231. package/dist/modules/module.abstract.js.map +1 -1
  232. package/dist/modules/module.container.d.ts +36 -0
  233. package/dist/modules/module.container.js +36 -0
  234. package/dist/modules/module.container.js.map +1 -1
  235. package/dist/modules/test-module.container.d.ts +139 -25
  236. package/dist/modules/test-module.container.js +410 -178
  237. package/dist/modules/test-module.container.js.map +1 -1
  238. package/dist/overlays/anchor.abstract.d.ts +32 -1
  239. package/dist/overlays/anchor.abstract.js +42 -11
  240. package/dist/overlays/anchor.abstract.js.map +1 -1
  241. package/dist/overlays/anchor.schema.d.ts +21 -0
  242. package/dist/overlays/anchor.schema.js +21 -0
  243. package/dist/overlays/anchor.schema.js.map +1 -1
  244. package/dist/overlays/overlay-data.repository.d.ts +18 -0
  245. package/dist/overlays/overlay-data.repository.js +18 -0
  246. package/dist/overlays/overlay-data.repository.js.map +1 -1
  247. package/dist/overlays/overlay.abstract.d.ts +56 -1
  248. package/dist/overlays/overlay.abstract.js +79 -20
  249. package/dist/overlays/overlay.abstract.js.map +1 -1
  250. package/dist/overlays/overlay.schema.d.ts +20 -0
  251. package/dist/overlays/overlay.schema.js +20 -0
  252. package/dist/overlays/overlay.schema.js.map +1 -1
  253. package/dist/resources/resource-action.interface.d.ts +26 -2
  254. package/dist/resources/resource-data.repository.d.ts +63 -1
  255. package/dist/resources/resource-data.repository.js +94 -4
  256. package/dist/resources/resource-data.repository.js.map +1 -1
  257. package/dist/resources/resource.abstract.d.ts +118 -3
  258. package/dist/resources/resource.abstract.js +166 -33
  259. package/dist/resources/resource.abstract.js.map +1 -1
  260. package/dist/resources/resource.schema.d.ts +29 -1
  261. package/dist/resources/resource.schema.js +28 -0
  262. package/dist/resources/resource.schema.js.map +1 -1
  263. package/dist/resources/terraform-resource.abstract.d.ts +44 -0
  264. package/dist/resources/terraform-resource.abstract.js +45 -0
  265. package/dist/resources/terraform-resource.abstract.js.map +1 -0
  266. package/dist/services/event/event.service.d.ts +30 -3
  267. package/dist/services/event/event.service.js +58 -16
  268. package/dist/services/event/event.service.js.map +1 -1
  269. package/dist/services/input/input.service.d.ts +52 -3
  270. package/dist/services/input/input.service.js +72 -8
  271. package/dist/services/input/input.service.js.map +1 -1
  272. package/dist/services/schema-translation/schema-translation.service.d.ts +9 -0
  273. package/dist/services/schema-translation/schema-translation.service.js +9 -0
  274. package/dist/services/schema-translation/schema-translation.service.js.map +1 -1
  275. package/dist/services/serialization/model/model-serialization.service.d.ts +26 -2
  276. package/dist/services/serialization/model/model-serialization.service.js +110 -62
  277. package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
  278. package/dist/services/serialization/resource/resource-serialization.service.d.ts +33 -4
  279. package/dist/services/serialization/resource/resource-serialization.service.js +64 -28
  280. package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
  281. package/dist/services/state-management/file-app-lock.utility.d.ts +43 -0
  282. package/dist/services/state-management/file-app-lock.utility.js +124 -0
  283. package/dist/services/state-management/file-app-lock.utility.js.map +1 -0
  284. package/dist/services/state-management/local-encryption.state-provider.d.ts +53 -2
  285. package/dist/services/state-management/local-encryption.state-provider.js +75 -49
  286. package/dist/services/state-management/local-encryption.state-provider.js.map +1 -1
  287. package/dist/services/state-management/local.state-provider.d.ts +49 -2
  288. package/dist/services/state-management/local.state-provider.js +70 -49
  289. package/dist/services/state-management/local.state-provider.js.map +1 -1
  290. package/dist/services/state-management/state-management.service.d.ts +141 -6
  291. package/dist/services/state-management/state-management.service.js +149 -4
  292. package/dist/services/state-management/state-management.service.js.map +1 -1
  293. package/dist/services/state-management/state-provider.interface.d.ts +55 -1
  294. package/dist/services/state-management/terraform-state.service.d.ts +76 -0
  295. package/dist/services/state-management/terraform-state.service.js +154 -0
  296. package/dist/services/state-management/terraform-state.service.js.map +1 -0
  297. package/dist/services/state-management/test.state-provider.d.ts +38 -1
  298. package/dist/services/state-management/test.state-provider.js +52 -21
  299. package/dist/services/state-management/test.state-provider.js.map +1 -1
  300. package/dist/services/terraform/terraform.service.d.ts +426 -0
  301. package/dist/services/terraform/terraform.service.js +995 -0
  302. package/dist/services/terraform/terraform.service.js.map +1 -0
  303. package/dist/services/terraform/terraform.type.d.ts +387 -0
  304. package/dist/services/terraform/terraform.type.js +579 -0
  305. package/dist/services/terraform/terraform.type.js.map +1 -0
  306. package/dist/services/transaction/transaction.service.d.ts +86 -10
  307. package/dist/services/transaction/transaction.service.js +387 -232
  308. package/dist/services/transaction/transaction.service.js.map +1 -1
  309. package/dist/services/validation/validation.service.d.ts +13 -1
  310. package/dist/services/validation/validation.service.js +12 -0
  311. package/dist/services/validation/validation.service.js.map +1 -1
  312. package/dist/utilities/array/array.utility.d.ts +3 -0
  313. package/dist/utilities/array/array.utility.js +3 -0
  314. package/dist/utilities/array/array.utility.js.map +1 -1
  315. package/dist/utilities/file/file.utility.d.ts +15 -0
  316. package/dist/utilities/file/file.utility.js +18 -1
  317. package/dist/utilities/file/file.utility.js.map +1 -1
  318. package/dist/utilities/hcl/hcl.utility.d.ts +61 -0
  319. package/dist/utilities/hcl/hcl.utility.js +229 -0
  320. package/dist/utilities/hcl/hcl.utility.js.map +1 -0
  321. package/dist/utilities/node/node.utility.d.ts +3 -0
  322. package/dist/utilities/node/node.utility.js +3 -0
  323. package/dist/utilities/node/node.utility.js.map +1 -1
  324. package/dist/utilities/object/object.utility.d.ts +12 -0
  325. package/dist/utilities/object/object.utility.js +12 -0
  326. package/dist/utilities/object/object.utility.js.map +1 -1
  327. package/dist/utilities/project/project.utility.d.ts +28 -0
  328. package/dist/utilities/project/project.utility.js +35 -0
  329. package/dist/utilities/project/project.utility.js.map +1 -0
  330. package/dist/utilities/string/string.utility.d.ts +21 -0
  331. package/dist/utilities/string/string.utility.js +39 -0
  332. package/dist/utilities/string/string.utility.js.map +1 -0
  333. package/dist/utilities/terraform/terraform.utility.d.ts +227 -0
  334. package/dist/utilities/terraform/terraform.utility.js +434 -0
  335. package/dist/utilities/terraform/terraform.utility.js.map +1 -0
  336. package/dist/utilities/test-helpers/test-classes.d.ts +18 -31
  337. package/dist/utilities/test-helpers/test-classes.js +18 -41
  338. package/dist/utilities/test-helpers/test-classes.js.map +1 -1
  339. package/dist/utilities/test-helpers/test-models.js +12 -0
  340. package/dist/utilities/test-helpers/test-models.js.map +1 -1
  341. package/dist/utilities/test-helpers/test-modes.d.ts +315 -0
  342. package/dist/utilities/test-helpers/test-modes.js +463 -0
  343. package/dist/utilities/test-helpers/test-modes.js.map +1 -0
  344. package/dist/utilities/test-helpers/test-modules.d.ts +41 -0
  345. package/dist/utilities/test-helpers/test-modules.js +79 -0
  346. package/dist/utilities/test-helpers/test-modules.js.map +1 -0
  347. package/dist/utilities/test-helpers/test-overlays.d.ts +17 -1
  348. package/dist/utilities/test-helpers/test-overlays.js +49 -5
  349. package/dist/utilities/test-helpers/test-overlays.js.map +1 -1
  350. package/dist/utilities/test-helpers/test-resources.d.ts +19 -1
  351. package/dist/utilities/test-helpers/test-resources.js +61 -3
  352. package/dist/utilities/test-helpers/test-resources.js.map +1 -1
  353. package/dist/utilities/validation/validation.utility.d.ts +24 -0
  354. package/dist/utilities/validation/validation.utility.js +24 -0
  355. package/dist/utilities/validation/validation.utility.js.map +1 -1
  356. package/package.json +6 -5
  357. package/dist/services/capture/capture.service.d.ts +0 -19
  358. package/dist/services/capture/capture.service.js +0 -43
  359. package/dist/services/capture/capture.service.js.map +0 -1
  360. package/dist/utilities/cidr/cidr.utility.d.ts +0 -10
  361. package/dist/utilities/cidr/cidr.utility.js +0 -51
  362. package/dist/utilities/cidr/cidr.utility.js.map +0 -1
@@ -4,14 +4,57 @@ import type { ModelActionHook } from '../functions/hook/model-action.hook.js';
4
4
  import type { ResourceActionHook } from '../functions/hook/resource-action.hook.js';
5
5
  import type { IModule } from './module.interface.js';
6
6
  /**
7
+ * The base class of every module - the unit you actually assemble infrastructure from.
8
+ *
9
+ * A module takes typed inputs, and produces models, overlays, and anchors. It is the reusable piece:
10
+ * you publish one, someone else loads it with {@link Octo.loadModule} and their own inputs, and the
11
+ * models it built become available to the modules that run after it.
12
+ *
13
+ * Everything a module needs from another module it finds by schema - see
14
+ * {@link AModel.getAnchorsMatchingSchema} - so modules compose without importing each other's classes.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * @Module<MyModule>('@example', MyModuleSchema)
19
+ * export class MyModule extends AModule<MyModuleSchema, MyRegion> {
20
+ * async onInit(inputs: MyModuleSchema): Promise<MyRegion> { ... }
21
+ * }
22
+ * ```
23
+ *
7
24
  * @group Modules
25
+ *
26
+ * @see Definition of [Modules](/docs/fundamentals/modules).
8
27
  */
9
28
  export declare abstract class AModule<S, T extends UnknownModel> implements IModule<S, T> {
10
29
  static readonly MODULE_PACKAGE: string;
11
30
  static readonly MODULE_SCHEMA: ModuleSchema<AModule<any, any>>;
31
+ /**
32
+ * The ID this module was loaded under. It scopes everything the module produces, so the same
33
+ * module class can be loaded more than once.
34
+ */
12
35
  readonly moduleId: string;
36
+ /**
37
+ * @param moduleId The ID this module is loaded under.
38
+ */
13
39
  constructor(moduleId: string);
40
+ /**
41
+ * Builds this module's infrastructure. It is where you construct models, attach anchors,
42
+ * and create overlays.
43
+ *
44
+ * Validate inputs here and throw a [ModuleError](/api/octo/class/ModuleError) on anything you
45
+ * cannot satisfy - failing in `onInit` costs nothing, while failing later costs a half-built stack.
46
+ *
47
+ * @param inputs The inputs this module was loaded with, already validated against its schema.
48
+ * @returns The nodes this module produced. Return them all, including overlays - they are what
49
+ * later modules resolve against.
50
+ */
14
51
  abstract onInit(inputs: S): Promise<T | UnknownModel[]>;
52
+ /**
53
+ * To hook custom behavior into Octo's lifecycle for the duration of this module.
54
+ * Override it to return the callbacks you want run.
55
+ *
56
+ * @see Techniques for [Hooks](/docs/techniques/hooks).
57
+ */
15
58
  registerHooks(): {
16
59
  postCommitHooks?: Parameters<CommitHook['collectHooks']>[0]['postHooks'];
17
60
  postModelActionHooks?: Parameters<ModelActionHook['collectHooks']>[0]['postHooks'];
@@ -20,5 +63,13 @@ export declare abstract class AModule<S, T extends UnknownModel> implements IMod
20
63
  preModelActionHooks?: Parameters<ModelActionHook['collectHooks']>[0]['preHooks'];
21
64
  preResourceActionHooks?: Parameters<ResourceActionHook['collectHooks']>[0]['preHooks'];
22
65
  };
66
+ /**
67
+ * To derive values that both {@link AModule.onInit} and this module's actions need - typically
68
+ * facts resolved from another module's anchors, such as an account ID or a region's availability
69
+ * zones. Override it, and the returned object is handed to every action of this module as
70
+ * `actionInputs.metadata`.
71
+ *
72
+ * @param inputs The inputs this module was loaded with.
73
+ */
23
74
  registerMetadata(inputs: S): Promise<Record<string, unknown>>;
24
75
  }
@@ -1,14 +1,50 @@
1
1
  import { strict as assert } from 'assert';
2
2
  /**
3
+ * The base class of every module - the unit you actually assemble infrastructure from.
4
+ *
5
+ * A module takes typed inputs, and produces models, overlays, and anchors. It is the reusable piece:
6
+ * you publish one, someone else loads it with {@link Octo.loadModule} and their own inputs, and the
7
+ * models it built become available to the modules that run after it.
8
+ *
9
+ * Everything a module needs from another module it finds by schema - see
10
+ * {@link AModel.getAnchorsMatchingSchema} - so modules compose without importing each other's classes.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * @Module<MyModule>('@example', MyModuleSchema)
15
+ * export class MyModule extends AModule<MyModuleSchema, MyRegion> {
16
+ * async onInit(inputs: MyModuleSchema): Promise<MyRegion> { ... }
17
+ * }
18
+ * ```
19
+ *
3
20
  * @group Modules
21
+ *
22
+ * @see Definition of [Modules](/docs/fundamentals/modules).
4
23
  */
5
24
  export class AModule {
25
+ /**
26
+ * @param moduleId The ID this module is loaded under.
27
+ */
6
28
  constructor(moduleId) {
7
29
  this.moduleId = moduleId;
8
30
  }
31
+ /**
32
+ * To hook custom behavior into Octo's lifecycle for the duration of this module.
33
+ * Override it to return the callbacks you want run.
34
+ *
35
+ * @see Techniques for [Hooks](/docs/techniques/hooks).
36
+ */
9
37
  registerHooks() {
10
38
  return {};
11
39
  }
40
+ /**
41
+ * To derive values that both {@link AModule.onInit} and this module's actions need - typically
42
+ * facts resolved from another module's anchors, such as an account ID or a region's availability
43
+ * zones. Override it, and the returned object is handed to every action of this module as
44
+ * `actionInputs.metadata`.
45
+ *
46
+ * @param inputs The inputs this module was loaded with.
47
+ */
12
48
  async registerMetadata(inputs) {
13
49
  assert(!!inputs);
14
50
  return {};
@@ -1 +1 @@
1
- {"version":3,"file":"module.abstract.js","sourceRoot":"","sources":["../../src/modules/module.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAO1C;;GAEG;AACH,MAAM,OAAgB,OAAO;IAO3B,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAID,aAAa;QAQX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAS;QAC9B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
1
+ {"version":3,"file":"module.abstract.js","sourceRoot":"","sources":["../../src/modules/module.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAO1C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAgB,OAAO;IAW3B;;OAEG;IACH,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAeD;;;;;OAKG;IACH,aAAa;QAQX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAS;QAC9B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
@@ -16,16 +16,43 @@ export declare class ModuleContainer {
16
16
  private readonly inputService;
17
17
  private readonly overlayDataRepository;
18
18
  private modules;
19
+ /**
20
+ * @internal
21
+ */
19
22
  constructor(eventService: EventService, inputService: InputService, overlayDataRepository: OverlayDataRepository);
23
+ /**
24
+ * @internal
25
+ */
20
26
  apply(): Promise<{
21
27
  [key: string]: unknown;
22
28
  }>;
29
+ /**
30
+ * @internal
31
+ */
23
32
  getMetadata(module: Constructable<UnknownModule> | string): ModuleContainer['modules'][0] | undefined;
33
+ /**
34
+ * @internal
35
+ */
24
36
  getMetadataIndex(module: Constructable<UnknownModule> | string): number;
37
+ /**
38
+ * @internal
39
+ */
25
40
  getModuleInstanceInputKeys(moduleId: string): string[];
41
+ /**
42
+ * @internal
43
+ */
26
44
  load<M extends UnknownModule>(module: Constructable<M> | string, moduleId: string, inputs: ModuleSchemaInputs<M>): void;
45
+ /**
46
+ * @internal
47
+ */
27
48
  order(modules: (Constructable<UnknownModule> | string)[]): void;
49
+ /**
50
+ * @internal
51
+ */
28
52
  register(module: Constructable<UnknownModule>, properties: ModuleOptions): void;
53
+ /**
54
+ * @internal
55
+ */
29
56
  registerHooks({ postCommitHooks, postModelActionHooks, postResourceActionHooks, preCommitHooks, preModelActionHooks, preResourceActionHooks, }?: {
30
57
  postCommitHooks?: Parameters<CommitHook['collectHooks']>[0]['postHooks'];
31
58
  postModelActionHooks?: Parameters<ModelActionHook['collectHooks']>[0]['postHooks'];
@@ -34,7 +61,13 @@ export declare class ModuleContainer {
34
61
  preModelActionHooks?: Parameters<ModelActionHook['collectHooks']>[0]['preHooks'];
35
62
  preResourceActionHooks?: Parameters<ResourceActionHook['collectHooks']>[0]['preHooks'];
36
63
  }): void;
64
+ /**
65
+ * @internal
66
+ */
37
67
  reset(): void;
68
+ /**
69
+ * @internal
70
+ */
38
71
  unload(module: Constructable<UnknownModule>): void;
39
72
  }
40
73
  /**
@@ -42,6 +75,9 @@ export declare class ModuleContainer {
42
75
  */
43
76
  export declare class ModuleContainerFactory {
44
77
  private static instance;
78
+ /**
79
+ * @internal
80
+ */
45
81
  static create(forceNew?: boolean): Promise<ModuleContainer>;
46
82
  }
47
83
  export {};
@@ -20,12 +20,18 @@ import { InputService } from '../services/input/input.service.js';
20
20
  * @internal
21
21
  */
22
22
  export class ModuleContainer {
23
+ /**
24
+ * @internal
25
+ */
23
26
  constructor(eventService, inputService, overlayDataRepository) {
24
27
  this.eventService = eventService;
25
28
  this.inputService = inputService;
26
29
  this.overlayDataRepository = overlayDataRepository;
27
30
  this.modules = [];
28
31
  }
32
+ /**
33
+ * @internal
34
+ */
29
35
  async apply() {
30
36
  const result = {};
31
37
  for (const moduleMetadata of this.modules) {
@@ -95,14 +101,23 @@ export class ModuleContainer {
95
101
  }
96
102
  return result;
97
103
  }
104
+ /**
105
+ * @internal
106
+ */
98
107
  getMetadata(module) {
99
108
  const index = this.getMetadataIndex(module);
100
109
  return index === -1 ? undefined : this.modules[index];
101
110
  }
111
+ /**
112
+ * @internal
113
+ */
102
114
  getMetadataIndex(module) {
103
115
  const moduleName = typeof module === 'string' ? module : `${module.MODULE_PACKAGE}/${module.name}`;
104
116
  return this.modules.findIndex((m) => `${m.properties.packageName}/${m.module.name}` === moduleName);
105
117
  }
118
+ /**
119
+ * @internal
120
+ */
106
121
  getModuleInstanceInputKeys(moduleId) {
107
122
  const moduleIndex = this.modules.findIndex((m) => m.instances.findIndex((i) => i.moduleId === moduleId) !== -1);
108
123
  if (moduleIndex === -1) {
@@ -110,6 +125,9 @@ export class ModuleContainer {
110
125
  }
111
126
  return this.modules[moduleIndex].instances.find((i) => i.moduleId === moduleId).inputKeys;
112
127
  }
128
+ /**
129
+ * @internal
130
+ */
113
131
  load(module, moduleId, inputs) {
114
132
  const moduleName = typeof module === 'string' ? module : `${module.MODULE_PACKAGE}/${module.name}`;
115
133
  const m = this.getMetadata(module);
@@ -129,6 +147,9 @@ export class ModuleContainer {
129
147
  this.inputService.registerInput(moduleId, key, JSON.parse(JSON.stringify(value)));
130
148
  }
131
149
  }
150
+ /**
151
+ * @internal
152
+ */
132
153
  order(modules) {
133
154
  this.modules.sort((a, b) => {
134
155
  const aIndex = modules.findIndex((m) => {
@@ -142,12 +163,18 @@ export class ModuleContainer {
142
163
  return aIndex - bIndex;
143
164
  });
144
165
  }
166
+ /**
167
+ * @internal
168
+ */
145
169
  register(module, properties) {
146
170
  const moduleName = `${module.MODULE_PACKAGE}/${module.name}`;
147
171
  if (!this.modules.some((m) => `${m.properties.packageName}/${m.module.name}` === moduleName)) {
148
172
  this.modules.push({ hidden: true, instances: [], module, properties });
149
173
  }
150
174
  }
175
+ /**
176
+ * @internal
177
+ */
151
178
  registerHooks({ postCommitHooks, postModelActionHooks, postResourceActionHooks, preCommitHooks, preModelActionHooks, preResourceActionHooks, } = {}) {
152
179
  CommitHook.getInstance().collectHooks({ postHooks: postCommitHooks, preHooks: preCommitHooks });
153
180
  ModelActionHook.getInstance().collectHooks({
@@ -159,12 +186,18 @@ export class ModuleContainer {
159
186
  preHooks: preResourceActionHooks,
160
187
  });
161
188
  }
189
+ /**
190
+ * @internal
191
+ */
162
192
  reset() {
163
193
  for (const m of this.modules) {
164
194
  m.hidden = true;
165
195
  m.instances = [];
166
196
  }
167
197
  }
198
+ /**
199
+ * @internal
200
+ */
168
201
  unload(module) {
169
202
  const m = this.getMetadata(module);
170
203
  if (m) {
@@ -176,6 +209,9 @@ export class ModuleContainer {
176
209
  * @internal
177
210
  */
178
211
  let ModuleContainerFactory = class ModuleContainerFactory {
212
+ /**
213
+ * @internal
214
+ */
179
215
  static async create(forceNew = false) {
180
216
  const [eventService, inputService, overlayDataRepository] = await Promise.all([
181
217
  Container.getInstance().get(EventService),
@@ -1 +1 @@
1
- {"version":3,"file":"module.container.js","sourceRoot":"","sources":["../../src/modules/module.container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.container.js","sourceRoot":"","sources":["../../src/modules/module.container.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import type { Constructable, ModuleOutput, ModuleSchemaInputs, UnknownAnchor, UnknownModel, UnknownModule } from '../app.type.js';
1
+ import type { Constructable, ModuleSchemaInputs, UnknownAnchor, UnknownModel, UnknownModule } from '../app.type.js';
2
+ import { type Container } from '../functions/container/container.js';
2
3
  import type { DiffMetadata } from '../functions/diff/diff-metadata.js';
3
4
  import { Octo } from '../main.js';
4
- import type { App } from '../models/app/app.model.js';
5
+ import type { ValidateReport } from '../modes/validate.mode.js';
5
6
  import type { BaseAnchorSchema } from '../overlays/anchor.schema.js';
6
7
  import type { BaseResourceSchema } from '../resources/resource.schema.js';
7
8
  import type { IStateProvider } from '../services/state-management/state-provider.interface.js';
@@ -9,6 +10,11 @@ import { create } from '../utilities/test-helpers/test-models.js';
9
10
  import { createTestOverlays } from '../utilities/test-helpers/test-overlays.js';
10
11
  import { createResources, createTestResources } from '../utilities/test-helpers/test-resources.js';
11
12
  /**
13
+ * One module to load into a {@link TestModuleContainer} run.
14
+ *
15
+ * Set `hidden` to register the module without running it - use it for a module a test needs
16
+ * present but not applied, e.g. one that is only there to be found by a schema lookup.
17
+ *
12
18
  * @group Modules
13
19
  */
14
20
  export type TestModule<M extends UnknownModule> = {
@@ -18,39 +24,147 @@ export type TestModule<M extends UnknownModule> = {
18
24
  type: Constructable<M>;
19
25
  };
20
26
  /**
27
+ * The harness for testing a module.
28
+ *
29
+ * It runs your module through the real Octo lifecycle against an in-memory state provider, and hands
30
+ * back everything a test needs to assert on: the model and resource transactions, the generated HCL,
31
+ * and the resource responses. Create it inside a {@link TestContainer} so each test file is isolated.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const container = await TestContainer.create({ mocks: [] }, { factoryTimeoutInMs: 500 });
36
+ * const testModuleContainer = new TestModuleContainer(container);
37
+ * await testModuleContainer.initialize();
38
+ *
39
+ * const generator = testModuleContainer.runModules([
40
+ * { inputs: { name: 'test-app' }, moduleId: 'app', type: SimpleAppModule },
41
+ * ]);
42
+ * const { modelTransaction } = (await generator.next()).value;
43
+ * ```
44
+ *
21
45
  * @group Modules
22
46
  */
23
47
  export declare class TestModuleContainer {
24
- readonly octo: Octo;
48
+ private readonly container;
49
+ private readonly octo;
50
+ private previousHcl;
25
51
  private stateProvider;
26
- constructor();
27
- commit(app: App, { appLockId, enableResourceCapture, filterByModuleIds, skipResourceTransaction, }?: {
28
- appLockId?: string;
29
- enableResourceCapture?: boolean;
30
- filterByModuleIds?: string[];
31
- skipResourceTransaction?: boolean;
32
- }): Promise<{
33
- modelDiffs: DiffMetadata[][];
34
- modelTransaction: DiffMetadata[][];
35
- resourceDiffs: DiffMetadata[][];
36
- resourceTransaction: DiffMetadata[][];
37
- }>;
52
+ /**
53
+ * @param container The {@link TestContainer} this run resolves its services from.
54
+ */
55
+ constructor(container: Container);
56
+ /**
57
+ * To seed resources that already exist, as though the given module had produced them.
58
+ * Use it to stand up the prerequisites a module under test expects to find.
59
+ */
60
+ createResources(moduleId: string, args: Parameters<typeof createResources>[0], options?: Parameters<typeof createResources>[1]): Promise<ReturnType<typeof createResources>>;
61
+ /**
62
+ * To build a throwaway anchor for a test double, without declaring an anchor class.
63
+ */
38
64
  createTestAnchor<S extends BaseAnchorSchema & {
39
65
  parentInstance: UnknownModel;
40
66
  }>(anchorId: string, properties: S['properties'], parent: S['parentInstance']): UnknownAnchor;
67
+ /**
68
+ * To seed models, as though the given module had produced them.
69
+ * Each model gets a no-op action, so the models appear in a transaction without doing any work.
70
+ */
41
71
  createTestModels(moduleId: string, args: Parameters<typeof create>[0]): Promise<ReturnType<typeof create>>;
72
+ /**
73
+ * To seed overlays, as though the given module had produced them.
74
+ * An overlay given no actions gets a no-op one.
75
+ */
42
76
  createTestOverlays(moduleId: string, args: Parameters<typeof createTestOverlays>[0]): Promise<ReturnType<typeof createTestOverlays>>;
43
- createResources(moduleId: string, args: Parameters<typeof createResources>[0], options?: Parameters<typeof createResources>[1]): Promise<ReturnType<typeof createResources>>;
77
+ /**
78
+ * To seed resources, as though the given module had produced them.
79
+ * A resource given no actions gets a no-op one, unless terraform owns it.
80
+ */
44
81
  createTestResources<S extends BaseResourceSchema[]>(moduleId: string, args: Parameters<typeof createTestResources<S>>[0], options?: Parameters<typeof createTestResources>[1]): Promise<ReturnType<typeof createTestResources<S>>>;
45
- mapTransactionActions(transaction: DiffMetadata[][]): string[][];
82
+ /**
83
+ * Reduces a transaction's diffs, model or resource, to a stable digest you can snapshot:
84
+ * `+ <context>` (create), `- <context>` (delete), `^ <context>` (replace), `* <context>` (update).
85
+ *
86
+ * A diff is classified exactly as {@link Octo.validate} aggregates it, so a digest and a validate
87
+ * report of the same transaction never disagree. Only an add/delete of a `resourceId` creates or
88
+ * destroys a resource; an add/delete on any other field changes a resource that stays -
89
+ * re-pointing a `parent`, most commonly - and reads as an update.
90
+ *
91
+ * The digest has one entry per diff, not per resource, so a resource may appear more than once.
92
+ */
93
+ digestDiffs(diffs: DiffMetadata[][]): string[];
94
+ /**
95
+ * Boots Octo for the test. Call it once, before running any module.
96
+ *
97
+ * @param stateProvider Defaults to an in-memory {@link TestStateProvider}. Only the local and test
98
+ * providers are accepted - a test must never write to shared state.
99
+ * @param initializeInContainer Factories to resolve at boot. See {@link Octo.initialize}.
100
+ * @param excludeInContainer Factories to unregister at boot. See {@link Octo.initialize}.
101
+ */
46
102
  initialize(stateProvider?: IStateProvider, initializeInContainer?: Parameters<typeof Octo.prototype.initialize>[1], excludeInContainer?: Parameters<typeof Octo.prototype.initialize>[2]): Promise<void>;
47
- orderModules(modules: (Constructable<UnknownModule> | string)[]): Promise<void>;
48
- registerCapture<S extends BaseResourceSchema>(resourceContext: string, response: Partial<S['response']>): void;
49
- runModule<M extends UnknownModule>(module: TestModule<M>): Promise<{
50
- [key: string]: ModuleOutput<M>;
51
- }>;
52
- runModules<M extends UnknownModule>(modules: TestModule<M>[]): Promise<{
53
- [key: string]: ModuleOutput<M>;
54
- }>;
103
+ /**
104
+ * Whether the committed resource state matches the previous one, i.e. whether the last run
105
+ * settled without leaving a pending change.
106
+ */
107
+ isResourceStateEqual(): Promise<boolean>;
108
+ /**
109
+ * Reduces a transaction to the names of the actions it ran, in order. Snapshot it to assert that
110
+ * a change triggered the actions you expected.
111
+ */
112
+ mapTransactionActions(transaction: DiffMetadata[][]): string[][];
113
+ /**
114
+ * See {@link Octo.registerHooks}.
115
+ */
116
+ registerHooks(...args: Parameters<Octo['registerHooks']>): ReturnType<Octo['registerHooks']>;
117
+ /**
118
+ * See {@link Octo.registerTags}.
119
+ */
120
+ registerTags(...args: Parameters<Octo['registerTags']>): ReturnType<Octo['registerTags']>;
121
+ /**
122
+ * See {@link Octo.registerTerraformConfig}. Required before a run that generates terraform.
123
+ */
124
+ registerTerraformConfig(...args: Parameters<Octo['registerTerraformConfig']>): ReturnType<Octo['registerTerraformConfig']>;
125
+ /**
126
+ * See {@link Octo.registerTerraformProvider}. Required before a run that generates terraform.
127
+ */
128
+ registerTerraformProvider(...args: Parameters<Octo['registerTerraformProvider']>): ReturnType<Octo['registerTerraformProvider']>;
129
+ /**
130
+ * Tears down the composed graph - models, overlays, inputs, and modules - so the next
131
+ * {@link TestModuleContainer.runModules} composes fresh. Call it in your test teardown.
132
+ */
55
133
  reset(): Promise<void>;
134
+ /**
135
+ * Runs the given modules through Octo's lifecycle, and yields the result once.
136
+ *
137
+ * How far the lifecycle goes is set by `terraformTarget`, and this is the choice that decides what
138
+ * the test costs:
139
+ * - `'skip'` - composes and commits in memory. No terraform, no cloud. This is a unit test.
140
+ * - `'plan'` - generates the module folders and runs `terraform plan` against them.
141
+ * - `'apply'` - generates, plans, applies, and commits. **This creates real infrastructure.**
142
+ *
143
+ * @param modules The modules to load, in order.
144
+ * @param options `filterByModuleIds` narrows the run to those modules; `outputDir` is where the
145
+ * terraform folders are written, defaulting to a temporary directory.
146
+ */
147
+ runModules<M extends UnknownModule>(modules: TestModule<M> | TestModule<M>[], { filterByModuleIds, outputDir, terraformTarget, }?: {
148
+ filterByModuleIds?: string[];
149
+ outputDir?: string;
150
+ terraformTarget?: 'apply' | 'plan' | 'skip';
151
+ }): AsyncGenerator<{
152
+ hclDiff: string;
153
+ hclRender: string;
154
+ modelTransaction: DiffMetadata[][];
155
+ resourceDiffs: DiffMetadata[][];
156
+ resourceTransaction: DiffMetadata[][];
157
+ responses: {
158
+ [resourceContext: string]: unknown;
159
+ };
160
+ validateReport: ValidateReport | undefined;
161
+ warnings: {
162
+ message: string;
163
+ moduleId?: string;
164
+ }[];
165
+ }>;
166
+ /**
167
+ * Persists the run's state, so a later run in the same test diffs against it.
168
+ */
169
+ private commit;
56
170
  }