@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,486 @@
1
+ import { mkdtemp, rm } from 'node:fs/promises';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'path';
4
+ import { NodeType, } from '../../app.type.js';
5
+ import { ResourceError } from '../../errors/index.js';
6
+ import { TestContainer } from '../../functions/container/test-container.js';
7
+ import { Diff, DiffAction } from '../../functions/diff/diff.js';
8
+ import { ANodeAction } from '../../functions/node/node-action.abstract.js';
9
+ import { TestModuleContainer } from '../../modules/test-module.container.js';
10
+ import { ResourceDataRepository } from '../../resources/resource-data.repository.js';
11
+ import { AResource } from '../../resources/resource.abstract.js';
12
+ import { ATerraformResource } from '../../resources/terraform-resource.abstract.js';
13
+ import { StateManagementService } from '../../services/state-management/state-management.service.js';
14
+ import { TestStateProvider } from '../../services/state-management/test.state-provider.js';
15
+ import { TerraformService } from '../../services/terraform/terraform.service.js';
16
+ import { TransactionService } from '../../services/transaction/transaction.service.js';
17
+ import { DiffUtility } from '../diff/diff.utility.js';
18
+ /**
19
+ * The action of {@link ExternalIgwResource}, filtering, recording and answering each diff as its
20
+ * {@link TestModes} says.
21
+ *
22
+ * @internal
23
+ */
24
+ class IgwResourceAction extends ANodeAction {
25
+ /**
26
+ * @internal
27
+ */
28
+ constructor(testModes) {
29
+ super();
30
+ this.testModes = testModes;
31
+ }
32
+ /**
33
+ * @internal
34
+ */
35
+ filter(diff) {
36
+ return this.testModes.igwActionFilter(diff);
37
+ }
38
+ /**
39
+ * @internal
40
+ */
41
+ async handle(diff) {
42
+ this.testModes.igwActionHandledDiffs.push(diff);
43
+ if (this.testModes.igwActionHandler) {
44
+ return this.testModes.igwActionHandler(diff);
45
+ }
46
+ return diff.action === 'delete' ? {} : this.testModes.igwResponse;
47
+ }
48
+ }
49
+ /**
50
+ * An external resource: lifecycle runs outside terraform via a resource action.
51
+ *
52
+ * @internal
53
+ */
54
+ export class ExternalIgwResource extends AResource {
55
+ static { this.NODE_NAME = 'external-igw'; }
56
+ static { this.NODE_PACKAGE = '@octo'; }
57
+ static { this.NODE_SCHEMA = {}; }
58
+ static { this.NODE_TYPE = NodeType.RESOURCE; }
59
+ /**
60
+ * @internal
61
+ */
62
+ constructor(resourceId, properties = {}, parents = []) {
63
+ super(resourceId, properties, parents);
64
+ }
65
+ }
66
+ /**
67
+ * A native terraform resource that references an (external) parent via `getRef`.
68
+ *
69
+ * @internal
70
+ */
71
+ export class TfSgResource extends ATerraformResource {
72
+ static { this.NODE_NAME = 'tf-sg'; }
73
+ static { this.NODE_PACKAGE = '@octo'; }
74
+ static { this.NODE_SCHEMA = {}; }
75
+ static { this.NODE_TYPE = NodeType.RESOURCE; }
76
+ /**
77
+ * @internal
78
+ */
79
+ constructor(resourceId, properties = {}, parents = []) {
80
+ super(resourceId, properties, parents);
81
+ }
82
+ /**
83
+ * @internal
84
+ */
85
+ async toHCL(terraform) {
86
+ const igw = this.parents[0];
87
+ const sgTf = terraform.addOctoTerraformResource(this);
88
+ sgTf.addTerraformResource('aws_security_group', this.resourceId, {
89
+ igw_id: terraform.getRef(igw, 'igwId'),
90
+ });
91
+ sgTf.output({ SgId: terraform.raw(`aws_security_group.${this.resourceId}.id`) });
92
+ }
93
+ }
94
+ /**
95
+ * A native terraform resource that contributes an `aws_vpc` block and publishes its id.
96
+ *
97
+ * @internal
98
+ */
99
+ export class TfVpcResource extends ATerraformResource {
100
+ static { this.NODE_NAME = 'tf-vpc'; }
101
+ static { this.NODE_PACKAGE = '@octo'; }
102
+ static { this.NODE_SCHEMA = {}; }
103
+ static { this.NODE_TYPE = NodeType.RESOURCE; }
104
+ /**
105
+ * @internal
106
+ */
107
+ constructor(resourceId, properties = {}, parents = []) {
108
+ super(resourceId, properties, parents);
109
+ }
110
+ /**
111
+ * @internal
112
+ */
113
+ async toHCL(terraform) {
114
+ // Bind a provider only when the resource carries an accountId, so the default (provider-less)
115
+ // graph keeps exercising the no-provider path while a provider-aware test can opt in.
116
+ const provider = this.properties['accountId']
117
+ ? {
118
+ provider: {
119
+ accountId: this.properties['accountId'],
120
+ regionId: this.properties['regionId'],
121
+ },
122
+ }
123
+ : undefined;
124
+ const vpcTf = terraform.addOctoTerraformResource(this, provider);
125
+ vpcTf.addTerraformResource('aws_vpc', this.resourceId, { cidr_block: this.properties['CidrBlock'] });
126
+ vpcTf.output({ VpcId: terraform.raw(`aws_vpc.${this.resourceId}.id`) });
127
+ }
128
+ }
129
+ /**
130
+ * A native terraform resource whose author declares that any property change recreates it: its
131
+ * `diffProperties` emits a single `REPLACE` instead of a granular update. Used to exercise the
132
+ * first-class REPLACE action and the validate replacement cascade.
133
+ *
134
+ * @internal
135
+ */
136
+ export class ReplacingTfVpcResource extends ATerraformResource {
137
+ static { this.NODE_NAME = 'replacing-tf-vpc'; }
138
+ static { this.NODE_PACKAGE = '@octo'; }
139
+ static { this.NODE_SCHEMA = {}; }
140
+ static { this.NODE_TYPE = NodeType.RESOURCE; }
141
+ /**
142
+ * @internal
143
+ */
144
+ constructor(resourceId, properties = {}, parents = []) {
145
+ super(resourceId, properties, parents);
146
+ }
147
+ /**
148
+ * @internal
149
+ */
150
+ async diffProperties(previous) {
151
+ if (!DiffUtility.isObjectDeepEquals(previous.properties, this.properties)) {
152
+ return [new Diff(this, DiffAction.REPLACE, 'properties', '', 'CidrBlock change forces VPC recreation')];
153
+ }
154
+ return [];
155
+ }
156
+ /**
157
+ * @internal
158
+ */
159
+ async toHCL(terraform) {
160
+ const vpcTf = terraform.addOctoTerraformResource(this);
161
+ vpcTf.addTerraformResource('aws_vpc', this.resourceId, { cidr_block: this.properties['CidrBlock'] });
162
+ vpcTf.output({ VpcId: terraform.raw(`aws_vpc.${this.resourceId}.id`) });
163
+ }
164
+ }
165
+ /**
166
+ * A native terraform resource whose author refuses any property update by throwing in
167
+ * `diffProperties`. Used to prove that an author refusal in a `diff*` method aborts generation
168
+ * before any HCL is built. Its `toHCL` records every invocation in {@link toHCLInvocations}, so a
169
+ * test can assert it was never reached when the diff threw.
170
+ *
171
+ * @internal
172
+ */
173
+ export class RefusingTfResource extends ATerraformResource {
174
+ static { this.NODE_NAME = 'refusing-tf'; }
175
+ static { this.NODE_PACKAGE = '@octo'; }
176
+ static { this.NODE_SCHEMA = {}; }
177
+ static { this.NODE_TYPE = NodeType.RESOURCE; }
178
+ static { this.toHCLInvocations = []; }
179
+ /**
180
+ * @internal
181
+ */
182
+ constructor(resourceId, properties = {}, parents = []) {
183
+ super(resourceId, properties, parents);
184
+ }
185
+ /**
186
+ * @internal
187
+ */
188
+ async diffProperties(previous) {
189
+ if (!DiffUtility.isObjectDeepEquals(previous.properties, this.properties)) {
190
+ throw new ResourceError('Cannot update RefusingTfResource once it has been created!', this);
191
+ }
192
+ return super.diffProperties(previous);
193
+ }
194
+ /**
195
+ * @internal
196
+ */
197
+ async toHCL(terraform) {
198
+ RefusingTfResource.toHCLInvocations.push(this.resourceId);
199
+ const tf = terraform.addOctoTerraformResource(this);
200
+ tf.addTerraformResource('aws_vpc', this.resourceId, { cidr_block: this.properties['CidrBlock'] });
201
+ tf.output({ VpcId: terraform.raw(`aws_vpc.${this.resourceId}.id`) });
202
+ }
203
+ }
204
+ /**
205
+ * Test harness for the `Octo` mode functions. {@link create} bootstraps an isolated container (via
206
+ * {@link TestContainer}) with real test terraform + transaction services and an external igw
207
+ * resource action, mirroring the wiring an `Octo` boot performs; the mode functions under test
208
+ * resolve those services from the container themselves. The instance exposes the standard
209
+ * vpc → igw → sg graph across two module folders plus helpers to fabricate terraform plan/state
210
+ * fixtures.
211
+ *
212
+ * @internal
213
+ */
214
+ export class TestModes {
215
+ /**
216
+ * @internal
217
+ */
218
+ constructor(octo, outputDir, resourceDataRepository, stateManagementService, terraformService, testModuleContainer) {
219
+ this.octo = octo;
220
+ this.outputDir = outputDir;
221
+ this.resourceDataRepository = resourceDataRepository;
222
+ this.stateManagementService = stateManagementService;
223
+ this.terraformService = terraformService;
224
+ this.testModuleContainer = testModuleContainer;
225
+ this.igwActionHandledDiffs = [];
226
+ /**
227
+ * The response the igw resource action returns. Mutable, and deliberately looser than
228
+ * `BaseResourceSchema['response']`, so a spec can hand back what a real SDK action can return at
229
+ * runtime but the schema type forbids - a number, a boolean, a null.
230
+ */
231
+ this.igwResponse = { igwId: 'igw-0real' };
232
+ this.outputs = new Map();
233
+ this.plans = new Map();
234
+ this.terraformConfigs = [];
235
+ this.terraformProviders = [];
236
+ /**
237
+ * What the igw resource action matches. Mutable so a spec can narrow it and exercise a diff that
238
+ * no registered action handles.
239
+ */
240
+ this.igwActionFilter = () => true;
241
+ }
242
+ /**
243
+ * @internal
244
+ */
245
+ static async create() {
246
+ const container = await TestContainer.create({ mocks: [] }, { factoryTimeoutInMs: 500, force: true });
247
+ const [resourceDataRepository, terraformService, transactionService] = await Promise.all([
248
+ container.get(ResourceDataRepository),
249
+ container.get(TerraformService),
250
+ container.get(TransactionService),
251
+ ]);
252
+ const testModuleContainer = new TestModuleContainer(container);
253
+ await testModuleContainer.initialize(new TestStateProvider());
254
+ const stateManagementService = await container.get(StateManagementService);
255
+ const outputDir = await mkdtemp(join(tmpdir(), 'octo-modes-test-'));
256
+ const instance = new TestModes(testModuleContainer['octo'], outputDir, resourceDataRepository, stateManagementService, terraformService, testModuleContainer);
257
+ // Registered after the instance exists so the action can read/append its mutable state. No
258
+ // transaction runs during initialize(), so registering here is in time for the mode under test.
259
+ const igwResourceAction = new IgwResourceAction(instance);
260
+ transactionService.registerResourceActions(ExternalIgwResource, [igwResourceAction]);
261
+ return instance;
262
+ }
263
+ /**
264
+ * Registers an additional resource into an existing module folder, the way a model action would
265
+ * contribute a new resource on a re-run. Use after {@link createResourceGraph} to exercise an add
266
+ * of a brand-new resource (module-attributed, so it lands in the named folder rather than the
267
+ * provider-less `default` folder).
268
+ */
269
+ async addResource(moduleId, resource) {
270
+ await this.testModuleContainer.createResources(moduleId, [resource]);
271
+ }
272
+ /**
273
+ * Simulates deleting every terraform config/provider declaration from `octo.yml`: the next
274
+ * simulated fresh process boots without them, the way a real process would after the edit.
275
+ */
276
+ clearTerraformRegistrations() {
277
+ this.terraformConfigs.length = 0;
278
+ this.terraformProviders.length = 0;
279
+ }
280
+ /**
281
+ * Takes the app lock the CLI would have taken, unless the caller supplied one, and releases it
282
+ * afterwards however the commit turned out, so a test never leaves one behind.
283
+ *
284
+ * @internal
285
+ */
286
+ async commit(app, options, transaction) {
287
+ await this.simulateFreshProcess();
288
+ const lockId = options.lockId ?? (await this.stateManagementService.lockApp()).lockId;
289
+ try {
290
+ return await this.octo.commit(app, { ...options, lockId }, transaction);
291
+ }
292
+ finally {
293
+ await this.stateManagementService.unlockApp(lockId);
294
+ }
295
+ }
296
+ /**
297
+ * The same two folders as {@link createResourceGraph}, with the security group reading
298
+ * the vpc across the folder boundary instead of the (external) internet gateway. That is the one
299
+ * shape the standard graph cannot make: a terraform resource whose dependency output terragrunt
300
+ * can mock.
301
+ *
302
+ * @internal
303
+ */
304
+ async createCrossModuleResourceGraph(options) {
305
+ const { app: [app], } = await this.testModuleContainer.createTestModels('app-module', { app: ['test-app'] });
306
+ const vpc = new TfVpcResource('vpc-1', { CidrBlock: '10.0.0.0/16' });
307
+ const sg = new TfSgResource('sg-1', {}, [vpc]);
308
+ await this.testModuleContainer.createResources('region-module', [vpc], options);
309
+ await this.testModuleContainer.createResources('sg-module', [sg], options);
310
+ return { app: app, sg, vpc };
311
+ }
312
+ /**
313
+ * @internal
314
+ */
315
+ async createProviderBoundResourceGraph(provider) {
316
+ const { app: [app], } = await this.testModuleContainer.createTestModels('app-module', { app: ['test-app'] });
317
+ const vpc = new TfVpcResource('vpc-1', {
318
+ accountId: provider.accountId,
319
+ CidrBlock: '10.0.0.0/16',
320
+ regionId: provider.regionId,
321
+ });
322
+ await this.testModuleContainer.createResources('region-module', [vpc]);
323
+ return { app: app, vpc };
324
+ }
325
+ /**
326
+ * Stages a single {@link RefusingTfResource} in `region-module`. With `save: true`, commits it so a
327
+ * later re-stage with changed properties drives an update that the resource refuses. Used to prove
328
+ * that an author refusal in `diff*` aborts generation before HCL is built.
329
+ */
330
+ async createRefusingResourceGraph(options) {
331
+ const { app: [app], } = await this.testModuleContainer.createTestModels('app-module', { app: ['test-app'] });
332
+ const refusing = new RefusingTfResource('refuse-1', { CidrBlock: '10.0.0.0/16' });
333
+ await this.testModuleContainer.createResources('region-module', [refusing], options);
334
+ return { app: app, refusing };
335
+ }
336
+ /**
337
+ * Same `vpc → igw → sg` shape as {@link createResourceGraph}, but the vpc is a
338
+ * {@link ReplacingTfVpcResource}, so changing its properties later yields a REPLACE that cascades
339
+ * (in terraform) onto igw and sg. Used to exercise the validate replacement cascade.
340
+ */
341
+ async createReplaceableResourceGraph(options) {
342
+ const { app: [app], } = await this.testModuleContainer.createTestModels('app-module', { app: ['test-app'] });
343
+ const vpc = new ReplacingTfVpcResource('vpc-1', { CidrBlock: '10.0.0.0/16' });
344
+ const igw = new ExternalIgwResource('igw-1', { Type: 'internet-gateway' }, [vpc]);
345
+ const sg = new TfSgResource('sg-1', {}, [igw]);
346
+ await this.testModuleContainer.createResources('region-module', [vpc, igw], options);
347
+ await this.testModuleContainer.createResources('sg-module', [sg], options);
348
+ return { app: app, igw, sg, vpc };
349
+ }
350
+ /**
351
+ * @internal
352
+ */
353
+ async createResourceGraph(options) {
354
+ const { app: [app], } = await this.testModuleContainer.createTestModels('app-module', { app: ['test-app'] });
355
+ const vpc = new TfVpcResource('vpc-1', { CidrBlock: '10.0.0.0/16' });
356
+ const igw = new ExternalIgwResource('igw-1', { Type: 'internet-gateway' }, [vpc]);
357
+ const sg = new TfSgResource('sg-1', {}, [igw]);
358
+ await this.testModuleContainer.createResources('region-module', [vpc, igw], options);
359
+ await this.testModuleContainer.createResources('sg-module', [sg], options);
360
+ return { app: app, igw, sg, vpc };
361
+ }
362
+ /**
363
+ * @internal
364
+ */
365
+ async generate(...args) {
366
+ await this.simulateFreshProcess();
367
+ return this.octo.generate(...args);
368
+ }
369
+ /**
370
+ * @internal
371
+ */
372
+ async getCommittedTerraformState() {
373
+ const { userData } = await this.stateManagementService.getResourceState('resources-actual.json');
374
+ return {
375
+ terraformFolders: userData.terraformFolders ?? [],
376
+ terraformResources: userData.terraformResources ?? [],
377
+ };
378
+ }
379
+ /**
380
+ * @internal
381
+ */
382
+ async getModelState() {
383
+ const { data } = await this.stateManagementService.getModelState('models.json');
384
+ return data;
385
+ }
386
+ /**
387
+ * @internal
388
+ */
389
+ async getResourceState(fileName = 'resources-old.json') {
390
+ const { data } = await this.stateManagementService.getResourceState(fileName);
391
+ return data;
392
+ }
393
+ /**
394
+ * @internal
395
+ */
396
+ async getTerraformFolderRecords() {
397
+ const { userData } = await this.stateManagementService.getModelState('models.json');
398
+ return userData.terraformFolders ?? [];
399
+ }
400
+ /**
401
+ * @internal
402
+ */
403
+ registerTerraformConfig(...args) {
404
+ this.terraformConfigs.push(args);
405
+ this.octo.registerTerraformConfig(...args);
406
+ }
407
+ /**
408
+ * @internal
409
+ */
410
+ registerTerraformProvider(...args) {
411
+ this.terraformProviders.push(args);
412
+ this.octo.registerTerraformProvider(...args);
413
+ }
414
+ /**
415
+ * @internal
416
+ */
417
+ async runAction(...args) {
418
+ await this.simulateFreshProcess();
419
+ return this.octo.runAction(...args);
420
+ }
421
+ /**
422
+ * Plants a terraform folder record into `models.json`, as if a past generate had written those
423
+ * folders.
424
+ */
425
+ async seedModelTerraformFolders(records) {
426
+ const { data, userData } = await this.stateManagementService.getModelState('models.json');
427
+ await this.stateManagementService.saveModelState('models.json', data, {
428
+ ...userData,
429
+ terraformFolders: records,
430
+ });
431
+ }
432
+ /**
433
+ * Simulates the boot of a fresh octo process: fully reset the terraform service, then replay the
434
+ * recorded config/provider registrations (config before providers, as boot order requires).
435
+ */
436
+ async simulateFreshProcess() {
437
+ this.terraformService.reset();
438
+ for (const args of this.terraformConfigs) {
439
+ this.octo.registerTerraformConfig(...args);
440
+ }
441
+ for (const args of this.terraformProviders) {
442
+ this.octo.registerTerraformProvider(...args);
443
+ }
444
+ }
445
+ /**
446
+ * @internal
447
+ */
448
+ async teardown() {
449
+ await rm(this.outputDir, { force: true, recursive: true });
450
+ await this.testModuleContainer.reset();
451
+ await TestContainer.reset();
452
+ }
453
+ /**
454
+ * @internal
455
+ */
456
+ async validate(...args) {
457
+ await this.simulateFreshProcess();
458
+ return this.octo.validate(...args);
459
+ }
460
+ /**
461
+ * @internal
462
+ */
463
+ writePlan(moduleId, resourceChanges) {
464
+ this.plans.set(moduleId, {
465
+ resource_changes: resourceChanges.map((c) => ({
466
+ address: c.address,
467
+ change: {
468
+ actions: c.actions,
469
+ after: c.after,
470
+ after_sensitive: c.afterSensitive,
471
+ after_unknown: c.afterUnknown,
472
+ before: c.before,
473
+ before_sensitive: c.beforeSensitive,
474
+ },
475
+ mode: 'managed',
476
+ })),
477
+ });
478
+ }
479
+ /**
480
+ * @internal
481
+ */
482
+ writeTfState(moduleId, outputs) {
483
+ this.outputs.set(moduleId, Object.fromEntries(Object.entries(outputs).map(([k, v]) => [k, { type: 'string', value: v }])));
484
+ }
485
+ }
486
+ //# sourceMappingURL=test-modes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-modes.js","sourceRoot":"","sources":["../../../src/utilities/test-helpers/test-modes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { Constructable, ModuleSchemaInputs, UnknownModel, UnknownModule } from '../../app.type.js';
2
+ import type { Container } from '../../functions/container/container.js';
3
+ import { App } from '../../models/app/app.model.js';
4
+ import { AModule } from '../../modules/module.abstract.js';
5
+ import { TestOverlay } from './test-classes.js';
6
+ /**
7
+ * The module a test helper ties a node to when its caller names none.
8
+ *
9
+ * @internal
10
+ */
11
+ export declare const TEST_MODULE_ID = "test-module";
12
+ /**
13
+ * @internal
14
+ */
15
+ declare class TestAppModuleSchema {
16
+ name: string;
17
+ }
18
+ /**
19
+ * @internal
20
+ */
21
+ declare class TestAppOverlayModuleSchema {
22
+ anchorName: string;
23
+ app: App;
24
+ }
25
+ /**
26
+ * @internal
27
+ */
28
+ export declare function createAppModule(): Constructable<AModule<TestAppModuleSchema, App>> & {
29
+ setClassName(className: string): Constructable<AModule<TestAppModuleSchema, App>>;
30
+ };
31
+ /**
32
+ * @internal
33
+ */
34
+ export declare function createAppOverlayModule(): Constructable<AModule<TestAppOverlayModuleSchema, TestOverlay>> & {
35
+ setClassName(className: string): Constructable<AModule<TestAppOverlayModuleSchema, TestOverlay>>;
36
+ };
37
+ /**
38
+ * @internal
39
+ */
40
+ export declare function runModule<M extends UnknownModule>(container: Container, { inputs, moduleId, type }: {
41
+ inputs: ModuleSchemaInputs<M>;
42
+ moduleId: string;
43
+ type: Constructable<M>;
44
+ }): Promise<{
45
+ [key: string]: UnknownModel;
46
+ }>;
47
+ export {};
@@ -0,0 +1,85 @@
1
+ import { Schema } from '../../functions/schema/schema.js';
2
+ import { App } from '../../models/app/app.model.js';
3
+ import { AModule } from '../../modules/module.abstract.js';
4
+ import { ModuleContainer } from '../../modules/module.container.js';
5
+ import { TestOverlay } from './test-classes.js';
6
+ /**
7
+ * The module a test helper ties a node to when its caller names none.
8
+ *
9
+ * @internal
10
+ */
11
+ export const TEST_MODULE_ID = 'test-module';
12
+ /**
13
+ * @internal
14
+ */
15
+ class TestAppModuleSchema {
16
+ constructor() {
17
+ this.name = Schema();
18
+ }
19
+ }
20
+ /**
21
+ * @internal
22
+ */
23
+ class TestAppOverlayModuleSchema {
24
+ constructor() {
25
+ this.anchorName = Schema();
26
+ this.app = Schema();
27
+ }
28
+ }
29
+ /**
30
+ * @internal
31
+ */
32
+ export function createAppModule() {
33
+ return class extends AModule {
34
+ static { this.MODULE_PACKAGE = '@octo'; }
35
+ static { this.MODULE_SCHEMA = TestAppModuleSchema; }
36
+ /**
37
+ * @internal
38
+ */
39
+ static setClassName(className) {
40
+ Object.defineProperty(this, 'name', { value: className });
41
+ return this;
42
+ }
43
+ /**
44
+ * @internal
45
+ */
46
+ async onInit(inputs) {
47
+ return new App(inputs.name);
48
+ }
49
+ };
50
+ }
51
+ /**
52
+ * @internal
53
+ */
54
+ export function createAppOverlayModule() {
55
+ return class extends AModule {
56
+ static { this.MODULE_PACKAGE = '@octo'; }
57
+ static { this.MODULE_SCHEMA = TestAppOverlayModuleSchema; }
58
+ /**
59
+ * @internal
60
+ */
61
+ static setClassName(className) {
62
+ Object.defineProperty(this, 'name', { value: className });
63
+ return this;
64
+ }
65
+ /**
66
+ * @internal
67
+ */
68
+ async onInit(inputs) {
69
+ const anchor = inputs.app.getAnchor(inputs.anchorName);
70
+ return new TestOverlay('test-overlay', {}, [anchor]);
71
+ }
72
+ };
73
+ }
74
+ /**
75
+ * @internal
76
+ */
77
+ export async function runModule(container, { inputs, moduleId, type }) {
78
+ const moduleContainer = await container.get(ModuleContainer);
79
+ if (moduleContainer.getMetadataIndex(type) === -1) {
80
+ moduleContainer.register(type, { packageName: type.MODULE_PACKAGE });
81
+ }
82
+ moduleContainer.load(type, moduleId, inputs);
83
+ return (await moduleContainer.apply());
84
+ }
85
+ //# sourceMappingURL=test-modules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-modules.js","sourceRoot":"","sources":["../../../src/utilities/test-helpers/test-modules.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC;AAE5C;;GAEG;AACH,MAAM,mBAAmB;IAAzB;QACE,SAAI,GAAG,MAAM,EAAU,CAAC;IAC1B,CAAC;CAAA;AAED;;GAEG;AACH,MAAM,0BAA0B;IAAhC;QACE,eAAU,GAAG,MAAM,EAAU,CAAC;QAC9B,QAAG,GAAG,MAAM,EAAO,CAAC;IACtB,CAAC;CAAA;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAG7B,OAAO,KAAM,SAAQ,OAAiC;iBAC3B,mBAAc,GAAG,OAAO,CAAC;iBAEzB,kBAAa,GAAG,mBAAmB,CAAC;QAE7D;;WAEG;QACH,MAAM,CAAC,YAAY,CAAC,SAAiB;YACnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;WAEG;QACH,KAAK,CAAC,MAAM,CAAC,MAA2B;YACtC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IAGpC,OAAO,KAAM,SAAQ,OAAgD;iBAC1C,mBAAc,GAAG,OAAO,CAAC;iBAEzB,kBAAa,GAAG,0BAA0B,CAAC;QAEpE;;WAEG;QACH,MAAM,CAAC,YAAY,CAAC,SAAiB;YACnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;WAEG;QACH,KAAK,CAAC,MAAM,CAAC,MAAkC;YAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAE,CAAC;YACxD,OAAO,IAAI,WAAW,CAAC,cAAc,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAoB,EACpB,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAA+E;IAEvG,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAE7D,IAAI,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAClD,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,WAAW,EAAG,IAAkC,CAAC,cAAc,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE7C,OAAO,CAAC,MAAM,eAAe,CAAC,KAAK,EAAE,CAAoC,CAAC;AAC5E,CAAC"}