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