@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
@@ -2,35 +2,156 @@ import { MatchingResource } from '../app.type.js';
2
2
  import { DiffInverseResourceError, RemoveResourceError, ResourceError } from '../errors/index.js';
3
3
  import { DependencyRelationship } from '../functions/dependency/dependency.js';
4
4
  import { Diff, DiffAction } from '../functions/diff/diff.js';
5
- import { DiffUtility } from '../functions/diff/diff.utility.js';
6
5
  import { ANode } from '../functions/node/node.abstract.js';
7
- import { ObjectUtility } from '../utilities/object/object.utility.js';
6
+ import { DiffUtility } from '../utilities/diff/diff.utility.js';
7
+ import { StringUtility } from '../utilities/string/string.utility.js';
8
8
  /**
9
+ * The base class of every resource - the nodes that describe actual cloud infrastructure.
10
+ *
11
+ * Where a model says *what you want*, a resource says *what exists*. Resources are never constructed
12
+ * by you directly; a model action declares them, and Octo diffs the declared graph against the last
13
+ * committed one to decide what to create, update, or destroy.
14
+ *
15
+ * A resource is identified by its `resourceId`, configured by its `properties`, and reports back
16
+ * through its `response` once the infrastructure exists. The ID it is created with is its
17
+ * `localResourceId`, which only has to be unique within its `scope`: where the node creating the
18
+ * resource sits in the model graph. Octo makes the `resourceId` from the two.
19
+ *
20
+ * Most resources extend {@link ATerraformResource} rather than this class.
21
+ *
9
22
  * @group Resources
23
+ *
24
+ * @see Definition of [Resources](/docs/fundamentals/resources).
10
25
  */
11
26
  export class AResource extends ANode {
12
- constructor(resourceId, properties, parents = []) {
27
+ /**
28
+ * The scope every resource constructed now is created in. The transaction sets it around each model
29
+ * action.
30
+ */
31
+ static { this.constructionScope = []; }
32
+ /**
33
+ * The ID of the resource, unique across the infrastructure: its `localResourceId`, followed by a
34
+ * hash of its scope when it has one.
35
+ */
36
+ get resourceId() {
37
+ if (this.scope.length === 0) {
38
+ return this.localResourceId;
39
+ }
40
+ return `${this.localResourceId}-${StringUtility.deterministicHash(this.scope).substring(0, 6)}`;
41
+ }
42
+ /**
43
+ * @param localResourceId The ID of the resource, unique within its scope.
44
+ * @param properties The desired configuration of the resource.
45
+ * @param parents The resources this one is built on top of.
46
+ * @throws {@link ResourceError} If the resource ID is not alphanumeric with `-`, `_`, or `/`.
47
+ */
48
+ constructor(localResourceId, properties, parents = []) {
13
49
  super();
14
- this.resourceId = resourceId;
50
+ this.localResourceId = localResourceId;
15
51
  this.properties = properties;
16
- this._deleteMarker = false;
52
+ /**
53
+ * The resources this one is built on top of. A parent is always created before its children,
54
+ * and destroyed after them.
55
+ */
17
56
  this.parents = [];
57
+ /**
58
+ * What the cloud provider reported back about this resource, e.g. an ARN or a generated ID.
59
+ * It is empty until the resource has actually been created, and is what other resources read
60
+ * when they need to reference this one.
61
+ */
18
62
  this.response = {};
63
+ /**
64
+ * The contexts of the models this resource is placed under, sorted. Octo derives it from the node
65
+ * whose action created the resource; a resource created outside a model action has an empty scope.
66
+ */
67
+ this.scope = [...AResource.constructionScope];
68
+ /**
69
+ * The tags applied to this resource. See {@link Octo.registerTags} to set them in bulk.
70
+ */
19
71
  this.tags = {};
20
- if (!/^[\w-/]+$/.test(resourceId)) {
72
+ this._deleteMarker = false;
73
+ if (!/^[\w-/]+$/.test(localResourceId)) {
21
74
  throw new ResourceError('Invalid resource ID!', this);
22
75
  }
23
76
  for (const parent of parents) {
24
- if (parent instanceof MatchingResource) {
25
- parent.addChild('resourceId', this, 'resourceId');
77
+ parent.addChild('resourceId', this, 'resourceId');
78
+ }
79
+ }
80
+ /**
81
+ * @internal
82
+ */
83
+ static async cloneResource(sourceResource, deReferenceResource) {
84
+ const deserializationClass = sourceResource.constructor;
85
+ return deserializationClass.unSynth(deserializationClass, sourceResource.synth(), deReferenceResource);
86
+ }
87
+ /**
88
+ * Constructs resources in the given scope.
89
+ *
90
+ * @internal
91
+ */
92
+ static constructInScope(scope, construct) {
93
+ const previousScope = AResource.constructionScope;
94
+ AResource.constructionScope = scope;
95
+ try {
96
+ return construct();
97
+ }
98
+ finally {
99
+ AResource.constructionScope = previousScope;
100
+ }
101
+ }
102
+ /**
103
+ * Runs a model action, so every resource it constructs is created in the given scope.
104
+ * Model actions run one at a time, which is what makes the scope safe to hold statically.
105
+ *
106
+ * @internal
107
+ */
108
+ static async runInScope(scope, run) {
109
+ const previousScope = AResource.constructionScope;
110
+ AResource.constructionScope = scope;
111
+ try {
112
+ return await run();
113
+ }
114
+ finally {
115
+ AResource.constructionScope = previousScope;
116
+ }
117
+ }
118
+ /**
119
+ * @internal
120
+ */
121
+ static async unSynth(deserializationClass, resource, deReferenceResource) {
122
+ const parents = await Promise.all(resource.parents.map((p) => deReferenceResource(p.context)));
123
+ const resourceInlineParents = parents.map((p) => {
124
+ const parentMetadata = resource.parents.find((pm) => pm.context === p.getContext());
125
+ if (parentMetadata.parentSchemaTranslator) {
126
+ const parentSchemaTranslator = new Function('return ' + parentMetadata.parentSchemaTranslator)();
127
+ return new MatchingResource(p, parentSchemaTranslator);
26
128
  }
27
129
  else {
28
- parent.addChild('resourceId', this, 'resourceId');
130
+ return p;
29
131
  }
132
+ });
133
+ const newResource = AResource.constructInScope(resource.scope || [], () => new deserializationClass(resource.localResourceId, resource.properties, resourceInlineParents));
134
+ for (const key of Object.keys(resource.response)) {
135
+ newResource.response[key] = resource.response[key];
136
+ }
137
+ for (const key of Object.keys(resource.tags)) {
138
+ newResource.tags[key] = resource.tags[key];
30
139
  }
140
+ return newResource;
31
141
  }
142
+ /**
143
+ * @internal
144
+ */
32
145
  addChild(onField, child, toField) {
33
146
  const result = super.addChild(onField, child, toField);
147
+ // Order a child's `ADD 'parent'` after the parent's own ADD. Applying that diff runs
148
+ // `cloneResourceInPlace`, which de-references every parent out of the *actual* resource graph,
149
+ // and a parent only lands there once its own diff has been applied.
150
+ //
151
+ // `super.addChild` registers this ordering for the child's `('resourceId', ADD)` only, which
152
+ // covers a child created alongside its parent but not one that already exists and is gaining a
153
+ // parent - there the child has no ADD of its own, just an `ADD 'parent'`, and nothing held it back.
154
+ result.childToParentDependency.addBehavior('parent', DiffAction.ADD, onField, DiffAction.ADD);
34
155
  if (child.parents.findIndex((p) => p instanceof MatchingResource
35
156
  ? p.getActual().getContext() === this.getContext()
36
157
  : p.getContext() === this.getContext()) === -1) {
@@ -50,18 +171,23 @@ export class AResource extends ANode {
50
171
  addRelationship() {
51
172
  throw new ResourceError('Relationships are not supported in resources!', this);
52
173
  }
174
+ /**
175
+ * @internal
176
+ */
53
177
  clonePropertiesInPlace(sourceResource) {
54
178
  for (const key of Object.keys(this.properties)) {
55
179
  delete this.properties[key];
56
180
  }
57
181
  for (const key of Object.keys(sourceResource.properties)) {
58
- this.properties[key] = JSON.parse(JSON.stringify(sourceResource.properties[key]));
182
+ this.properties[key] =
183
+ sourceResource.properties[key] === undefined
184
+ ? undefined
185
+ : JSON.parse(JSON.stringify(sourceResource.properties[key]));
59
186
  }
60
187
  }
61
- static async cloneResource(sourceResource, deReferenceResource) {
62
- const deserializationClass = sourceResource.constructor;
63
- return deserializationClass.unSynth(deserializationClass, sourceResource.synth(), deReferenceResource);
64
- }
188
+ /**
189
+ * @internal
190
+ */
65
191
  async cloneResourceInPlace(sourceResource, deReferenceResource) {
66
192
  // Remove all dependencies from self.
67
193
  const selfParents = Object.values(this.getParents())
@@ -96,14 +222,23 @@ export class AResource extends ANode {
96
222
  // Replace tags.
97
223
  this.cloneTagsInPlace(sourceResource);
98
224
  }
225
+ /**
226
+ * @internal
227
+ */
99
228
  cloneResponseInPlace(sourceResource) {
100
229
  for (const key of Object.keys(this.response)) {
101
230
  delete this.response[key];
102
231
  }
103
232
  for (const key of Object.keys(sourceResource.response)) {
104
- this.response[key] = JSON.parse(JSON.stringify(sourceResource.response[key]));
233
+ this.response[key] =
234
+ sourceResource.response[key] === undefined
235
+ ? undefined
236
+ : JSON.parse(JSON.stringify(sourceResource.response[key]));
105
237
  }
106
238
  }
239
+ /**
240
+ * @internal
241
+ */
107
242
  cloneTagsInPlace(sourceResource) {
108
243
  for (const key of Object.keys(this.tags)) {
109
244
  delete this.tags[key];
@@ -112,6 +247,9 @@ export class AResource extends ANode {
112
247
  this.tags[key] = sourceResource.tags[key];
113
248
  }
114
249
  }
250
+ /**
251
+ * @internal
252
+ */
115
253
  async diff(previous) {
116
254
  const diffs = [];
117
255
  const propertyDiffs = await this.diffProperties(previous);
@@ -133,6 +271,9 @@ export class AResource extends ANode {
133
271
  for (const parent of newParents) {
134
272
  diffs.push(new Diff(this, DiffAction.ADD, 'parent', parent));
135
273
  }
274
+ // Deep-compare the parent's whole object rather than delegating to its `diffProperties()`. A
275
+ // parent that excludes a field the child renders would otherwise produce no octo diff anywhere
276
+ // while terraform plans a change on the child, which validate would report as drift.
136
277
  for (const currentParent of currentParents) {
137
278
  const previousParent = previousParents.find((p) => p.getContext() === currentParent.getContext());
138
279
  if (previousParent && !DiffUtility.isObjectDeepEquals(currentParent, previousParent, ['tags'])) {
@@ -141,6 +282,9 @@ export class AResource extends ANode {
141
282
  }
142
283
  return diffs;
143
284
  }
285
+ /**
286
+ * @internal
287
+ */
144
288
  async diffInverse(diff, deReferenceResource) {
145
289
  if (diff.action === DiffAction.VALIDATE) {
146
290
  return;
@@ -157,6 +301,9 @@ export class AResource extends ANode {
157
301
  }
158
302
  case 'parent': {
159
303
  if (diff.action === DiffAction.ADD || diff.action === DiffAction.DELETE) {
304
+ // Unlike properties, by default we copy all parents in one shot!
305
+ // If the custom resource wants to apply each parent individually, they must override diffInverse()
306
+ // with their custom logic.
160
307
  await this.cloneResourceInPlace(diff.node, deReferenceResource);
161
308
  }
162
309
  else if (diff.action === DiffAction.UPDATE) {
@@ -171,7 +318,8 @@ export class AResource extends ANode {
171
318
  case 'properties': {
172
319
  if (diff.action === DiffAction.ADD || diff.action === DiffAction.UPDATE) {
173
320
  const change = diff.value;
174
- this.properties[change.key] = JSON.parse(JSON.stringify(change.value));
321
+ this.properties[change.key] =
322
+ change.value === undefined ? undefined : JSON.parse(JSON.stringify(change.value));
175
323
  }
176
324
  else if (diff.action === DiffAction.DELETE) {
177
325
  const change = diff.value;
@@ -213,9 +361,15 @@ export class AResource extends ANode {
213
361
  }
214
362
  }
215
363
  }
364
+ /**
365
+ * @internal
366
+ */
216
367
  async diffProperties(previous) {
217
368
  return DiffUtility.diffObject(previous, this, 'properties');
218
369
  }
370
+ /**
371
+ * @internal
372
+ */
219
373
  async diffTags(previous) {
220
374
  const tagsToAdd = {};
221
375
  const tagsToDelete = [];
@@ -238,9 +392,20 @@ export class AResource extends ANode {
238
392
  }
239
393
  return [new Diff(this, DiffAction.UPDATE, 'tags', { add: tagsToAdd, delete: tagsToDelete, update: tagsToUpdate })];
240
394
  }
395
+ /**
396
+ * Splits one diff into the diffs a resource action will actually receive.
397
+ *
398
+ * Override it when a single change on this resource has to be applied as several ordered steps.
399
+ * The default returns the diff unchanged.
400
+ */
241
401
  diffUnpack(diff) {
242
402
  return [diff];
243
403
  }
404
+ /**
405
+ * To find this resource's parents whose properties match every given filter.
406
+ *
407
+ * @param filters Each filter is a property `key` the parent must carry with the given `value`.
408
+ */
244
409
  findParentsByProperty(filters) {
245
410
  const parents = [];
246
411
  const dependencies = Object.values(this.getParents()).flat();
@@ -252,6 +417,11 @@ export class AResource extends ANode {
252
417
  }
253
418
  return parents;
254
419
  }
420
+ /**
421
+ * To find this resource's parents whose tags match every given filter.
422
+ *
423
+ * @param filters Each filter is a tag `key` the parent must carry with the given `value`.
424
+ */
255
425
  findParentsByTag(filters) {
256
426
  const parents = [];
257
427
  const dependencies = Object.values(this.getParents()).flat();
@@ -269,12 +439,27 @@ export class AResource extends ANode {
269
439
  getBoundaryMembers() {
270
440
  throw new ResourceError('Boundary is not supported in resources!', this);
271
441
  }
442
+ /**
443
+ * The properties whose change means an external resource has to be run again. Terraform hashes
444
+ * them into the trigger of the `null_resource` that stands in for the resource, which is how it
445
+ * decides to call back.
446
+ *
447
+ * A resource that overrides {@link diffProperties} to ignore a property must exclude that property
448
+ * here too. The two answer the same question, and terraform plans a replacement for any property
449
+ * only this one covers, which octo then reports no change for.
450
+ */
451
+ getExternalTriggerProperties() {
452
+ return this.properties;
453
+ }
272
454
  /**
273
455
  * @deprecated Siblings are not supported in resources!
274
456
  */
275
457
  getSiblings() {
276
458
  throw new ResourceError('Siblings are not supported in resources!', this);
277
459
  }
460
+ /**
461
+ * @internal
462
+ */
278
463
  isDeepEquals(other) {
279
464
  if (!other) {
280
465
  return false;
@@ -297,30 +482,18 @@ export class AResource extends ANode {
297
482
  return DiffUtility.isObjectDeepEquals(sdPd.synth(), odPd.synth());
298
483
  });
299
484
  }
485
+ /**
486
+ * Whether this resource is marked for deletion, and will leave the graph at the end of the transaction.
487
+ */
300
488
  isMarkedDeleted() {
301
489
  return this._deleteMarker;
302
490
  }
303
- merge(previous) {
304
- const currentDependencies = this.getDependencies();
305
- const previousDependencies = previous.getDependencies();
306
- ObjectUtility.deepMergeInPlace(previous.properties, this.properties);
307
- ObjectUtility.deepMergeInPlace(previous.response, this.response);
308
- ObjectUtility.deepMergeInPlace(previous.tags, this.tags);
309
- const currentDependenciesNotInPreviousResource = currentDependencies.filter((cd) => !previousDependencies.find((pd) => pd.isEqual(cd)));
310
- for (const dependency of currentDependenciesNotInPreviousResource) {
311
- if (dependency.isChildRelationship()) {
312
- dependency.to.addChild('resourceId', previous, 'resourceId');
313
- }
314
- else if (dependency.isParentRelationship()) {
315
- previous.addChild('resourceId', dependency.to, 'resourceId');
316
- }
317
- else {
318
- throw new ResourceError('Unknown dependency found in merge!', this);
319
- }
320
- }
321
- Object.assign(this, previous);
322
- return previous;
323
- }
491
+ /**
492
+ * To mark this resource for deletion. It leaves the graph at the end of the transaction.
493
+ *
494
+ * @param force Removes the resource even if other resources still depend on it.
495
+ * @throws {@link RemoveResourceError} If the resource still has children, and `force` is not set.
496
+ */
324
497
  remove(force = false) {
325
498
  const dependencies = this.getDependencies();
326
499
  // Verify resource can be removed.
@@ -337,18 +510,29 @@ export class AResource extends ANode {
337
510
  }
338
511
  this._deleteMarker = true;
339
512
  }
513
+ /**
514
+ * @internal
515
+ */
340
516
  setContext() {
341
517
  const nodePackage = this.constructor.NODE_PACKAGE;
342
518
  const nodeName = this.constructor.NODE_NAME;
343
519
  return `${nodePackage}/${nodeName}=${this.resourceId}`;
344
520
  }
521
+ /**
522
+ * To record what the cloud provider reported back about this resource.
523
+ * Keys absent from `response` are left as they were.
524
+ */
345
525
  setResponse(response) {
346
526
  for (const key of Object.keys(response || {})) {
347
- this.response[key] = JSON.parse(JSON.stringify(response[key]));
527
+ this.response[key] = response[key] === undefined ? undefined : JSON.parse(JSON.stringify(response[key]));
348
528
  }
349
529
  }
530
+ /**
531
+ * @internal
532
+ */
350
533
  synth() {
351
534
  const resourceSynth = {
535
+ localResourceId: this.localResourceId,
352
536
  parents: this.parents.map((p) => {
353
537
  const parentReference = {
354
538
  context: p instanceof MatchingResource ? p.getActual().getContext() : p.getContext(),
@@ -363,30 +547,10 @@ export class AResource extends ANode {
363
547
  properties: JSON.parse(JSON.stringify(this.properties)),
364
548
  resourceId: this.resourceId,
365
549
  response: JSON.parse(JSON.stringify(this.response)),
550
+ scope: [...this.scope],
366
551
  tags: JSON.parse(JSON.stringify(this.tags)),
367
552
  };
368
553
  return resourceSynth;
369
554
  }
370
- static async unSynth(deserializationClass, resource, deReferenceResource) {
371
- const parents = await Promise.all(resource.parents.map((p) => deReferenceResource(p.context)));
372
- const resourceInlineParents = parents.map((p) => {
373
- const parentMetadata = resource.parents.find((pm) => pm.context === p.getContext());
374
- if (parentMetadata.parentSchemaTranslator) {
375
- const parentSchemaTranslator = new Function('return ' + parentMetadata.parentSchemaTranslator)();
376
- return new MatchingResource(p, parentSchemaTranslator);
377
- }
378
- else {
379
- return p;
380
- }
381
- });
382
- const newResource = new deserializationClass(resource.resourceId, resource.properties, resourceInlineParents);
383
- for (const key of Object.keys(resource.response)) {
384
- newResource.response[key] = resource.response[key];
385
- }
386
- for (const key of Object.keys(resource.tags)) {
387
- newResource.tags[key] = resource.tags[key];
388
- }
389
- return newResource;
390
- }
391
555
  }
392
556
  //# sourceMappingURL=resource.abstract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.abstract.js","sourceRoot":"","sources":["../../src/resources/resource.abstract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.abstract.js","sourceRoot":"","sources":["../../src/resources/resource.abstract.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import type { UnknownResource } from '../app.type.js';
2
2
  import type { Diff } from '../functions/diff/diff.js';
3
3
  import type { INode, INodeReference } from '../functions/node/node.interface.js';
4
- import type { AResource } from './resource.abstract.js';
5
4
  import type { BaseResourceSchema } from './resource.schema.js';
6
5
  /**
7
6
  * @internal
@@ -28,7 +27,6 @@ export interface IResource<S extends BaseResourceSchema, T extends UnknownResour
28
27
  * A deleted node will be removed from the graph after the transaction.
29
28
  */
30
29
  isMarkedDeleted(): boolean;
31
- merge(previous: AResource<S, T>): AResource<S, T>;
32
30
  /**
33
31
  * To mark self as deleted.
34
32
  * A deleted node will be removed from the graph after the transaction.
@@ -1,16 +1,54 @@
1
1
  import type { IResourceReference } from './resource.interface.js';
2
2
  /**
3
+ * The schema every resource schema extends.
4
+ *
5
+ * A resource schema narrows `properties` and `response` to the fields that resource actually has;
6
+ * the remaining members are the same for all resources.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * export class MyResourceSchema extends BaseResourceSchema {
11
+ * override properties = Schema<{ bucketName: string }>();
12
+ * override response = Schema<{ arn: string }>();
13
+ * }
14
+ * ```
15
+ *
3
16
  * @group Resources
4
17
  */
5
18
  export declare class BaseResourceSchema {
19
+ /**
20
+ * The ID the resource was created with, unique within its `scope`.
21
+ */
22
+ localResourceId: string;
23
+ /**
24
+ * The resources this one is built on top of.
25
+ */
6
26
  parents: IResourceReference[];
27
+ /**
28
+ * The desired configuration of the resource, i.e. what you asked the cloud provider for.
29
+ */
7
30
  properties: {
8
31
  [key: string]: unknown;
9
32
  };
33
+ /**
34
+ * The ID of the resource, unique across the infrastructure: its `localResourceId`, followed by a hash
35
+ * of its `scope` when it has one.
36
+ */
10
37
  resourceId: string;
38
+ /**
39
+ * What the cloud provider reported back once the resource existed. Empty until then.
40
+ */
11
41
  response: {
12
- [key: string]: unknown;
42
+ [key: string]: string;
13
43
  };
44
+ /**
45
+ * The contexts of the models the resource is placed under, derived from where the node creating it
46
+ * sits in the model graph. Octo sets it; a resource created outside a model action has none.
47
+ */
48
+ scope: string[];
49
+ /**
50
+ * The tags applied to the resource.
51
+ */
14
52
  tags: {
15
53
  [key: string]: string;
16
54
  };
@@ -1,13 +1,51 @@
1
1
  import { Schema } from '../functions/schema/schema.js';
2
2
  /**
3
+ * The schema every resource schema extends.
4
+ *
5
+ * A resource schema narrows `properties` and `response` to the fields that resource actually has;
6
+ * the remaining members are the same for all resources.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * export class MyResourceSchema extends BaseResourceSchema {
11
+ * override properties = Schema<{ bucketName: string }>();
12
+ * override response = Schema<{ arn: string }>();
13
+ * }
14
+ * ```
15
+ *
3
16
  * @group Resources
4
17
  */
5
18
  export class BaseResourceSchema {
6
19
  constructor() {
20
+ /**
21
+ * The ID the resource was created with, unique within its `scope`.
22
+ */
23
+ this.localResourceId = Schema();
24
+ /**
25
+ * The resources this one is built on top of.
26
+ */
7
27
  this.parents = Schema();
28
+ /**
29
+ * The desired configuration of the resource, i.e. what you asked the cloud provider for.
30
+ */
8
31
  this.properties = Schema();
32
+ /**
33
+ * The ID of the resource, unique across the infrastructure: its `localResourceId`, followed by a hash
34
+ * of its `scope` when it has one.
35
+ */
9
36
  this.resourceId = Schema();
37
+ /**
38
+ * What the cloud provider reported back once the resource existed. Empty until then.
39
+ */
10
40
  this.response = Schema();
41
+ /**
42
+ * The contexts of the models the resource is placed under, derived from where the node creating it
43
+ * sits in the model graph. Octo sets it; a resource created outside a model action has none.
44
+ */
45
+ this.scope = Schema([]);
46
+ /**
47
+ * The tags applied to the resource.
48
+ */
11
49
  this.tags = Schema();
12
50
  }
13
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resource.schema.js","sourceRoot":"","sources":["../../src/resources/resource.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAGvD;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAA/B;QACE,YAAO,GAAG,MAAM,EAAwB,CAAC;QAEzC,eAAU,GAAG,MAAM,EAA8B,CAAC;QAElD,eAAU,GAAG,MAAM,EAAU,CAAC;QAE9B,aAAQ,GAAG,MAAM,EAA8B,CAAC;QAEhD,SAAI,GAAG,MAAM,EAA6B,CAAC;IAC7C,CAAC;CAAA"}
1
+ {"version":3,"file":"resource.schema.js","sourceRoot":"","sources":["../../src/resources/resource.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAGvD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,kBAAkB;IAA/B;QACE;;WAEG;QACH,oBAAe,GAAG,MAAM,EAAU,CAAC;QAEnC;;WAEG;QACH,YAAO,GAAG,MAAM,EAAwB,CAAC;QAEzC;;WAEG;QACH,eAAU,GAAG,MAAM,EAA8B,CAAC;QAElD;;;WAGG;QACH,eAAU,GAAG,MAAM,EAAU,CAAC;QAE9B;;WAEG;QACH,aAAQ,GAAG,MAAM,EAA6B,CAAC;QAE/C;;;WAGG;QACH,UAAK,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;QAE7B;;WAEG;QACH,SAAI,GAAG,MAAM,EAA6B,CAAC;IAC7C,CAAC;CAAA"}