@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.
- package/LICENSE +661 -0
- package/README.md +117 -8
- package/dist/app.type.d.ts +277 -19
- package/dist/app.type.js +80 -9
- package/dist/app.type.js.map +1 -1
- package/dist/decorators/action.decorator.d.ts +10 -6
- package/dist/decorators/action.decorator.js +19 -6
- package/dist/decorators/action.decorator.js.map +1 -1
- package/dist/decorators/anchor.decorator.d.ts +12 -5
- package/dist/decorators/anchor.decorator.js +12 -5
- package/dist/decorators/anchor.decorator.js.map +1 -1
- package/dist/decorators/enable-hook.decorator.d.ts +1 -1
- package/dist/decorators/enable-hook.decorator.js +1 -1
- package/dist/decorators/factory.decorator.d.ts +18 -34
- package/dist/decorators/factory.decorator.js +18 -34
- package/dist/decorators/factory.decorator.js.map +1 -1
- package/dist/decorators/model.decorator.d.ts +4 -6
- package/dist/decorators/model.decorator.js +2 -7
- package/dist/decorators/model.decorator.js.map +1 -1
- package/dist/decorators/module.decorator.d.ts +16 -10
- package/dist/decorators/module.decorator.js +16 -10
- package/dist/decorators/module.decorator.js.map +1 -1
- package/dist/decorators/on-event.decorator.d.ts +7 -2
- package/dist/decorators/on-event.decorator.js +5 -0
- package/dist/decorators/on-event.decorator.js.map +1 -1
- package/dist/decorators/resource.decorator.d.ts +50 -1
- package/dist/decorators/resource.decorator.js +38 -1
- package/dist/decorators/resource.decorator.js.map +1 -1
- package/dist/decorators/validate.decorator.d.ts +15 -1
- package/dist/decorators/validate.decorator.js +15 -1
- package/dist/decorators/validate.decorator.js.map +1 -1
- package/dist/errors/container.error.d.ts +18 -0
- package/dist/errors/container.error.js +18 -0
- package/dist/errors/container.error.js.map +1 -1
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.js +1 -0
- package/dist/errors/index.js.map +1 -1
- package/dist/errors/module.error.d.ts +6 -0
- package/dist/errors/module.error.js +6 -0
- package/dist/errors/module.error.js.map +1 -1
- package/dist/errors/node.error.d.ts +56 -0
- package/dist/errors/node.error.js +56 -0
- package/dist/errors/node.error.js.map +1 -1
- package/dist/errors/schema.error.d.ts +14 -1
- package/dist/errors/schema.error.js +11 -1
- package/dist/errors/schema.error.js.map +1 -1
- package/dist/errors/terraform.error.d.ts +20 -0
- package/dist/errors/terraform.error.js +24 -0
- package/dist/errors/terraform.error.js.map +1 -0
- package/dist/errors/transaction.error.d.ts +93 -2
- package/dist/errors/transaction.error.js +83 -0
- package/dist/errors/transaction.error.js.map +1 -1
- package/dist/events/action.event.d.ts +8 -4
- package/dist/events/action.event.js +2 -4
- package/dist/events/action.event.js.map +1 -1
- package/dist/events/command.event.d.ts +43 -0
- package/dist/events/command.event.js +33 -0
- package/dist/events/command.event.js.map +1 -0
- package/dist/events/event.model.d.ts +26 -8
- package/dist/events/event.model.js +15 -7
- package/dist/events/event.model.js.map +1 -1
- package/dist/events/hook/commit.hook.event.d.ts +1 -7
- package/dist/events/hook/commit.hook.event.js +0 -6
- package/dist/events/hook/commit.hook.event.js.map +1 -1
- package/dist/events/hook/hook.event.d.ts +1 -3
- package/dist/events/hook/hook.event.js +0 -2
- package/dist/events/hook/hook.event.js.map +1 -1
- package/dist/events/hook/model.hook.event.d.ts +1 -7
- package/dist/events/hook/model.hook.event.js +0 -6
- package/dist/events/hook/model.hook.event.js.map +1 -1
- package/dist/events/hook/resource.hook.event.d.ts +1 -7
- package/dist/events/hook/resource.hook.event.js +0 -6
- package/dist/events/hook/resource.hook.event.js.map +1 -1
- package/dist/events/index.d.ts +5 -0
- package/dist/events/index.js +5 -0
- package/dist/events/index.js.map +1 -1
- package/dist/events/mode-result.event.d.ts +57 -0
- package/dist/events/mode-result.event.js +24 -0
- package/dist/events/mode-result.event.js.map +1 -0
- package/dist/events/mode.event.d.ts +61 -0
- package/dist/events/mode.event.js +32 -0
- package/dist/events/mode.event.js.map +1 -0
- package/dist/events/module.event.d.ts +7 -5
- package/dist/events/module.event.js +3 -4
- package/dist/events/module.event.js.map +1 -1
- package/dist/events/registration.event.d.ts +19 -15
- package/dist/events/registration.event.js +18 -14
- package/dist/events/registration.event.js.map +1 -1
- package/dist/events/serialization.event.d.ts +16 -13
- package/dist/events/serialization.event.js +15 -12
- package/dist/events/serialization.event.js.map +1 -1
- package/dist/events/state.event.d.ts +102 -0
- package/dist/events/state.event.js +69 -0
- package/dist/events/state.event.js.map +1 -0
- package/dist/events/terraform.event.d.ts +78 -0
- package/dist/events/terraform.event.js +55 -0
- package/dist/events/terraform.event.js.map +1 -0
- package/dist/events/transaction.event.d.ts +3 -40
- package/dist/events/transaction.event.js +1 -29
- package/dist/events/transaction.event.js.map +1 -1
- package/dist/functions/container/container.d.ts +54 -13
- package/dist/functions/container/container.js +64 -19
- package/dist/functions/container/container.js.map +1 -1
- package/dist/functions/container/test-container.d.ts +43 -29
- package/dist/functions/container/test-container.js +71 -43
- package/dist/functions/container/test-container.js.map +1 -1
- package/dist/functions/dependency/dependency.d.ts +84 -23
- package/dist/functions/dependency/dependency.js +84 -14
- package/dist/functions/dependency/dependency.js.map +1 -1
- package/dist/functions/diff/aggregate-resource-actions.d.ts +19 -0
- package/dist/functions/diff/aggregate-resource-actions.js +41 -0
- package/dist/functions/diff/aggregate-resource-actions.js.map +1 -0
- package/dist/functions/diff/diff-metadata.d.ts +21 -3
- package/dist/functions/diff/diff-metadata.js +18 -0
- package/dist/functions/diff/diff-metadata.js.map +1 -1
- package/dist/functions/diff/diff.d.ts +68 -7
- package/dist/functions/diff/diff.js +44 -3
- package/dist/functions/diff/diff.js.map +1 -1
- package/dist/functions/hook/commit.hook.d.ts +16 -1
- package/dist/functions/hook/commit.hook.js +21 -6
- package/dist/functions/hook/commit.hook.js.map +1 -1
- package/dist/functions/hook/model-action.hook.d.ts +16 -1
- package/dist/functions/hook/model-action.hook.js +21 -6
- package/dist/functions/hook/model-action.hook.js.map +1 -1
- package/dist/functions/hook/resource-action.hook.d.ts +16 -1
- package/dist/functions/hook/resource-action.hook.js +21 -6
- package/dist/functions/hook/resource-action.hook.js.map +1 -1
- package/dist/functions/node/node-action.abstract.d.ts +23 -2
- package/dist/functions/node/node-action.abstract.js +22 -8
- package/dist/functions/node/node-action.abstract.js.map +1 -1
- package/dist/functions/node/node.abstract.d.ts +56 -5
- package/dist/functions/node/node.abstract.js +106 -22
- package/dist/functions/node/node.abstract.js.map +1 -1
- package/dist/functions/node/node.interface.d.ts +3 -1
- package/dist/functions/schema/schema.d.ts +7 -0
- package/dist/functions/schema/schema.js +10 -1
- package/dist/functions/schema/schema.js.map +1 -1
- package/dist/index.d.ts +12 -6
- package/dist/index.js +9 -4
- package/dist/index.js.map +1 -1
- package/dist/index.type.d.ts +5 -0
- package/dist/index.type.js +2 -0
- package/dist/index.type.js.map +1 -0
- package/dist/main.d.ts +245 -14
- package/dist/main.js +377 -72
- package/dist/main.js.map +1 -1
- package/dist/models/account/account.model.d.ts +43 -7
- package/dist/models/account/account.model.js +56 -8
- package/dist/models/account/account.model.js.map +1 -1
- package/dist/models/account/account.schema.d.ts +13 -1
- package/dist/models/account/account.schema.js +12 -0
- package/dist/models/account/account.schema.js.map +1 -1
- package/dist/models/app/app.model.d.ts +13 -8
- package/dist/models/app/app.model.js +17 -32
- package/dist/models/app/app.model.js.map +1 -1
- package/dist/models/app/app.schema.d.ts +6 -0
- package/dist/models/app/app.schema.js +6 -0
- package/dist/models/app/app.schema.js.map +1 -1
- package/dist/models/deployment/deployment.model.d.ts +13 -1
- package/dist/models/deployment/deployment.model.js +16 -4
- package/dist/models/deployment/deployment.model.js.map +1 -1
- package/dist/models/deployment/deployment.schema.d.ts +6 -0
- package/dist/models/deployment/deployment.schema.js +6 -0
- package/dist/models/deployment/deployment.schema.js.map +1 -1
- package/dist/models/environment/environment.model.d.ts +15 -3
- package/dist/models/environment/environment.model.js +22 -10
- package/dist/models/environment/environment.model.js.map +1 -1
- package/dist/models/environment/environment.schema.d.ts +2 -0
- package/dist/models/environment/environment.schema.js +2 -0
- package/dist/models/environment/environment.schema.js.map +1 -1
- package/dist/models/execution/execution.model.d.ts +21 -3
- package/dist/models/execution/execution.model.js +47 -29
- package/dist/models/execution/execution.model.js.map +1 -1
- package/dist/models/execution/execution.schema.d.ts +11 -0
- package/dist/models/execution/execution.schema.js +11 -0
- package/dist/models/execution/execution.schema.js.map +1 -1
- package/dist/models/filesystem/filesystem.model.d.ts +27 -1
- package/dist/models/filesystem/filesystem.model.js +30 -4
- package/dist/models/filesystem/filesystem.model.js.map +1 -1
- package/dist/models/filesystem/filesystem.schema.d.ts +5 -0
- package/dist/models/filesystem/filesystem.schema.js +5 -0
- package/dist/models/filesystem/filesystem.schema.js.map +1 -1
- package/dist/models/image/image.model.d.ts +19 -5
- package/dist/models/image/image.model.js +25 -11
- package/dist/models/image/image.model.js.map +1 -1
- package/dist/models/image/image.schema.d.ts +8 -0
- package/dist/models/image/image.schema.js +8 -0
- package/dist/models/image/image.schema.js.map +1 -1
- package/dist/models/model-action.interface.d.ts +17 -4
- package/dist/models/model.abstract.d.ts +96 -1
- package/dist/models/model.abstract.js +107 -8
- package/dist/models/model.abstract.js.map +1 -1
- package/dist/models/model.interface.d.ts +3 -0
- package/dist/models/pipeline/pipeline.model.d.ts +14 -2
- package/dist/models/pipeline/pipeline.model.js +19 -7
- package/dist/models/pipeline/pipeline.model.js.map +1 -1
- package/dist/models/pipeline/pipeline.schema.d.ts +8 -0
- package/dist/models/pipeline/pipeline.schema.js +8 -0
- package/dist/models/pipeline/pipeline.schema.js.map +1 -1
- package/dist/models/region/region.model.d.ts +16 -1
- package/dist/models/region/region.model.js +19 -4
- package/dist/models/region/region.model.js.map +1 -1
- package/dist/models/region/region.schema.d.ts +6 -0
- package/dist/models/region/region.schema.js +6 -0
- package/dist/models/region/region.schema.js.map +1 -1
- package/dist/models/server/server.model.d.ts +15 -3
- package/dist/models/server/server.model.js +18 -6
- package/dist/models/server/server.model.js.map +1 -1
- package/dist/models/server/server.schema.d.ts +3 -1
- package/dist/models/server/server.schema.js +3 -1
- package/dist/models/server/server.schema.js.map +1 -1
- package/dist/models/service/service.model.d.ts +37 -6
- package/dist/models/service/service.model.js +65 -11
- package/dist/models/service/service.model.js.map +1 -1
- package/dist/models/service/service.schema.d.ts +48 -1
- package/dist/models/service/service.schema.js +56 -1
- package/dist/models/service/service.schema.js.map +1 -1
- package/dist/models/subnet/subnet.model.d.ts +27 -3
- package/dist/models/subnet/subnet.model.js +40 -16
- package/dist/models/subnet/subnet.model.js.map +1 -1
- package/dist/models/subnet/subnet.schema.d.ts +9 -0
- package/dist/models/subnet/subnet.schema.js +9 -0
- package/dist/models/subnet/subnet.schema.js.map +1 -1
- package/dist/modes/apply-transaction.d.ts +23 -0
- package/dist/modes/apply-transaction.js +25 -0
- package/dist/modes/apply-transaction.js.map +1 -0
- package/dist/modes/commit.mode.d.ts +54 -0
- package/dist/modes/commit.mode.js +235 -0
- package/dist/modes/commit.mode.js.map +1 -0
- package/dist/modes/generate.mode.d.ts +30 -0
- package/dist/modes/generate.mode.js +50 -0
- package/dist/modes/generate.mode.js.map +1 -0
- package/dist/modes/run-action.mode.d.ts +30 -0
- package/dist/modes/run-action.mode.js +140 -0
- package/dist/modes/run-action.mode.js.map +1 -0
- package/dist/modes/validate.mode.d.ts +186 -0
- package/dist/modes/validate.mode.js +558 -0
- package/dist/modes/validate.mode.js.map +1 -0
- package/dist/modules/module.abstract.d.ts +51 -0
- package/dist/modules/module.abstract.js +36 -0
- package/dist/modules/module.abstract.js.map +1 -1
- package/dist/modules/module.container.d.ts +43 -1
- package/dist/modules/module.container.js +77 -5
- package/dist/modules/module.container.js.map +1 -1
- package/dist/modules/test-module.container.d.ts +139 -25
- package/dist/modules/test-module.container.js +383 -199
- package/dist/modules/test-module.container.js.map +1 -1
- package/dist/overlays/anchor.abstract.d.ts +32 -1
- package/dist/overlays/anchor.abstract.js +42 -11
- package/dist/overlays/anchor.abstract.js.map +1 -1
- package/dist/overlays/anchor.schema.d.ts +21 -0
- package/dist/overlays/anchor.schema.js +21 -0
- package/dist/overlays/anchor.schema.js.map +1 -1
- package/dist/overlays/overlay-data.repository.d.ts +18 -0
- package/dist/overlays/overlay-data.repository.js +18 -0
- package/dist/overlays/overlay-data.repository.js.map +1 -1
- package/dist/overlays/overlay.abstract.d.ts +56 -1
- package/dist/overlays/overlay.abstract.js +79 -20
- package/dist/overlays/overlay.abstract.js.map +1 -1
- package/dist/overlays/overlay.schema.d.ts +20 -0
- package/dist/overlays/overlay.schema.js +20 -0
- package/dist/overlays/overlay.schema.js.map +1 -1
- package/dist/resources/resource-action.interface.d.ts +29 -3
- package/dist/resources/resource-data.repository.d.ts +63 -1
- package/dist/resources/resource-data.repository.js +94 -4
- package/dist/resources/resource-data.repository.js.map +1 -1
- package/dist/resources/resource.abstract.d.ts +163 -6
- package/dist/resources/resource.abstract.js +223 -59
- package/dist/resources/resource.abstract.js.map +1 -1
- package/dist/resources/resource.interface.d.ts +0 -2
- package/dist/resources/resource.schema.d.ts +39 -1
- package/dist/resources/resource.schema.js +38 -0
- package/dist/resources/resource.schema.js.map +1 -1
- package/dist/resources/terraform-resource.abstract.d.ts +44 -0
- package/dist/resources/terraform-resource.abstract.js +45 -0
- package/dist/resources/terraform-resource.abstract.js.map +1 -0
- package/dist/services/event/event.service.d.ts +32 -5
- package/dist/services/event/event.service.js +58 -16
- package/dist/services/event/event.service.js.map +1 -1
- package/dist/services/input/input.service.d.ts +82 -5
- package/dist/services/input/input.service.js +143 -12
- package/dist/services/input/input.service.js.map +1 -1
- package/dist/services/schema-translation/schema-translation.service.d.ts +9 -0
- package/dist/services/schema-translation/schema-translation.service.js +9 -0
- package/dist/services/schema-translation/schema-translation.service.js.map +1 -1
- package/dist/services/serialization/model/model-serialization.service.d.ts +25 -3
- package/dist/services/serialization/model/model-serialization.service.js +113 -62
- package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
- package/dist/services/serialization/resource/resource-serialization.service.d.ts +36 -6
- package/dist/services/serialization/resource/resource-serialization.service.js +77 -28
- package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
- package/dist/services/state-management/local.state-provider.d.ts +67 -4
- package/dist/services/state-management/local.state-provider.js +168 -41
- package/dist/services/state-management/local.state-provider.js.map +1 -1
- package/dist/services/state-management/remote.state-provider.d.ts +216 -0
- package/dist/services/state-management/remote.state-provider.js +645 -0
- package/dist/services/state-management/remote.state-provider.js.map +1 -0
- package/dist/services/state-management/state-management.service.d.ts +195 -17
- package/dist/services/state-management/state-management.service.js +259 -10
- package/dist/services/state-management/state-management.service.js.map +1 -1
- package/dist/services/state-management/state-provider.interface.d.ts +98 -3
- package/dist/services/state-management/state-provider.interface.js +14 -1
- package/dist/services/state-management/state-provider.interface.js.map +1 -1
- package/dist/services/state-management/terraform-state.service.d.ts +99 -0
- package/dist/services/state-management/terraform-state.service.js +197 -0
- package/dist/services/state-management/terraform-state.service.js.map +1 -0
- package/dist/services/state-management/test.state-provider.d.ts +42 -4
- package/dist/services/state-management/test.state-provider.js +77 -25
- package/dist/services/state-management/test.state-provider.js.map +1 -1
- package/dist/services/terraform/terraform.service.d.ts +480 -0
- package/dist/services/terraform/terraform.service.js +1082 -0
- package/dist/services/terraform/terraform.service.js.map +1 -0
- package/dist/services/terraform/terraform.type.d.ts +387 -0
- package/dist/services/terraform/terraform.type.js +579 -0
- package/dist/services/terraform/terraform.type.js.map +1 -0
- package/dist/services/transaction/transaction.service.d.ts +110 -10
- package/dist/services/transaction/transaction.service.js +570 -251
- package/dist/services/transaction/transaction.service.js.map +1 -1
- package/dist/services/validation/validation.service.d.ts +15 -3
- package/dist/services/validation/validation.service.js +12 -0
- package/dist/services/validation/validation.service.js.map +1 -1
- package/dist/utilities/array/array.utility.d.ts +3 -0
- package/dist/utilities/array/array.utility.js +3 -0
- package/dist/utilities/array/array.utility.js.map +1 -1
- package/dist/{functions → utilities}/diff/diff.utility.d.ts +19 -3
- package/dist/{functions → utilities}/diff/diff.utility.js +57 -41
- package/dist/utilities/diff/diff.utility.js.map +1 -0
- package/dist/utilities/file/file.utility.d.ts +16 -2
- package/dist/utilities/file/file.utility.js +23 -61
- package/dist/utilities/file/file.utility.js.map +1 -1
- package/dist/utilities/hcl/hcl.utility.d.ts +128 -0
- package/dist/utilities/hcl/hcl.utility.js +402 -0
- package/dist/utilities/hcl/hcl.utility.js.map +1 -0
- package/dist/utilities/http/http.utility.d.ts +57 -0
- package/dist/utilities/http/http.utility.js +98 -0
- package/dist/utilities/http/http.utility.js.map +1 -0
- package/dist/utilities/node/node.utility.d.ts +3 -0
- package/dist/utilities/node/node.utility.js +3 -0
- package/dist/utilities/node/node.utility.js.map +1 -1
- package/dist/utilities/object/object.utility.d.ts +12 -0
- package/dist/utilities/object/object.utility.js +12 -0
- package/dist/utilities/object/object.utility.js.map +1 -1
- package/dist/utilities/project/project.utility.d.ts +28 -0
- package/dist/utilities/project/project.utility.js +35 -0
- package/dist/utilities/project/project.utility.js.map +1 -0
- package/dist/utilities/string/string.utility.d.ts +41 -0
- package/dist/utilities/string/string.utility.js +65 -0
- package/dist/utilities/string/string.utility.js.map +1 -0
- package/dist/utilities/terraform/terraform.utility.d.ts +276 -0
- package/dist/utilities/terraform/terraform.utility.js +623 -0
- package/dist/utilities/terraform/terraform.utility.js.map +1 -0
- package/dist/utilities/test-helpers/test-classes.d.ts +36 -30
- package/dist/utilities/test-helpers/test-classes.js +38 -39
- package/dist/utilities/test-helpers/test-classes.js.map +1 -1
- package/dist/utilities/test-helpers/test-models.d.ts +8 -1
- package/dist/utilities/test-helpers/test-models.js +37 -12
- package/dist/utilities/test-helpers/test-models.js.map +1 -1
- package/dist/utilities/test-helpers/test-modes.d.ts +315 -0
- package/dist/utilities/test-helpers/test-modes.js +486 -0
- package/dist/utilities/test-helpers/test-modes.js.map +1 -0
- package/dist/utilities/test-helpers/test-modules.d.ts +47 -0
- package/dist/utilities/test-helpers/test-modules.js +85 -0
- package/dist/utilities/test-helpers/test-modules.js.map +1 -0
- package/dist/utilities/test-helpers/test-overlays.d.ts +20 -2
- package/dist/utilities/test-helpers/test-overlays.js +56 -6
- package/dist/utilities/test-helpers/test-overlays.js.map +1 -1
- package/dist/utilities/test-helpers/test-resources.d.ts +23 -3
- package/dist/utilities/test-helpers/test-resources.js +83 -23
- package/dist/utilities/test-helpers/test-resources.js.map +1 -1
- package/dist/utilities/validation/validation.utility.d.ts +24 -0
- package/dist/utilities/validation/validation.utility.js +24 -0
- package/dist/utilities/validation/validation.utility.js.map +1 -1
- package/package.json +12 -6
- package/dist/functions/diff/diff.utility.js.map +0 -1
- package/dist/services/capture/capture.service.d.ts +0 -19
- package/dist/services/capture/capture.service.js +0 -43
- package/dist/services/capture/capture.service.js.map +0 -1
- package/dist/services/state-management/local-encryption.state-provider.d.ts +0 -20
- package/dist/services/state-management/local-encryption.state-provider.js +0 -90
- package/dist/services/state-management/local-encryption.state-provider.js.map +0 -1
- package/dist/utilities/cidr/cidr.utility.d.ts +0 -10
- package/dist/utilities/cidr/cidr.utility.js +0 -51
- package/dist/utilities/cidr/cidr.utility.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote.state-provider.js","sourceRoot":"","sources":["../../../src/services/state-management/remote.state-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +1,217 @@
|
|
|
1
|
-
import type { ModelSerializedOutput, ResourceSerializedOutput } from '../../app.type.js';
|
|
2
|
-
import type
|
|
1
|
+
import type { ModelSerializedOutput, ResourceSerializedOutput, TerraformFolderOutput, TerraformResourceOutput } from '../../app.type.js';
|
|
2
|
+
import { type IStateProvider } from './state-provider.interface.js';
|
|
3
3
|
/**
|
|
4
|
+
* The `userData` written beside the model graph in `models.json`.
|
|
5
|
+
*
|
|
6
|
+
* @group Services/State Management
|
|
7
|
+
*/
|
|
8
|
+
export type ModelStateUserData = {
|
|
9
|
+
terraformFolders?: TerraformFolderOutput[];
|
|
10
|
+
version?: number;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* The `userData` written beside the resource graph in `resources-actual.json` and
|
|
14
|
+
* `resources-old.json`.
|
|
15
|
+
*
|
|
16
|
+
* @group Services/State Management
|
|
17
|
+
*/
|
|
18
|
+
export type ResourceStateUserData = {
|
|
19
|
+
terraformFolders?: TerraformFolderOutput[];
|
|
20
|
+
terraformResources?: TerraformResourceOutput[];
|
|
21
|
+
version?: number;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* `models.json`: the model graph as it stands after the last commit.
|
|
25
|
+
*
|
|
26
|
+
* @group Services/State Management
|
|
27
|
+
*/
|
|
28
|
+
export type ModelStateFile = {
|
|
29
|
+
data: ModelSerializedOutput;
|
|
30
|
+
userData: ModelStateUserData;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* `resources-actual.json`, the resource graph as it stands after the last commit, and
|
|
34
|
+
* `resources-old.json`, the resource graph as intent described it on the last commit.
|
|
35
|
+
*
|
|
36
|
+
* @group Services/State Management
|
|
37
|
+
*/
|
|
38
|
+
export type ResourceStateFile = {
|
|
39
|
+
data: ResourceSerializedOutput;
|
|
40
|
+
userData: ResourceStateUserData;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* `resource-state-<resourceId>.json`, with each `/` of the id written as `.`: what an external
|
|
44
|
+
* resource's action made of it — the inputs it was given, the properties it was asked for, and the
|
|
45
|
+
* response it produced. It exists only between the action succeeding and the `commit` that folds it
|
|
46
|
+
* into the resource graph, and while it exists it is the truth about that resource.
|
|
47
|
+
*
|
|
48
|
+
* @group Services/State Management
|
|
49
|
+
*/
|
|
50
|
+
export type ExternalResourceStateFile = {
|
|
51
|
+
inputs: {
|
|
52
|
+
[key: string]: unknown;
|
|
53
|
+
};
|
|
54
|
+
properties: {
|
|
55
|
+
[key: string]: unknown;
|
|
56
|
+
};
|
|
57
|
+
response: {
|
|
58
|
+
[key: string]: string;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Reads and writes Octo's state files through the configured {@link IStateProvider}.
|
|
63
|
+
*
|
|
64
|
+
* Resolve it from the {@link Container} when you need to inspect what the last run recorded.
|
|
65
|
+
* Octo manages its own state files, so writing through this service is rarely the right move.
|
|
66
|
+
*
|
|
4
67
|
* @group Services/State Management
|
|
5
68
|
*/
|
|
6
69
|
export declare class StateManagementService {
|
|
70
|
+
/**
|
|
71
|
+
* The resource graph as it stands after the last commit.
|
|
72
|
+
*/
|
|
73
|
+
readonly actualResourceStateFileName: string;
|
|
74
|
+
/**
|
|
75
|
+
* The prefix of each record an external resource's action writes, until `commit` folds it into
|
|
76
|
+
* the resource graph.
|
|
77
|
+
*/
|
|
78
|
+
readonly externalResourceStateFileNamePrefix: string;
|
|
79
|
+
/**
|
|
80
|
+
* The model graph as it stands after the last commit.
|
|
81
|
+
*/
|
|
82
|
+
readonly modelStateFileName: string;
|
|
83
|
+
/**
|
|
84
|
+
* The resource graph as intent described it on the last commit.
|
|
85
|
+
*/
|
|
86
|
+
readonly oldResourceStateFileName: string;
|
|
7
87
|
private readonly stateProvider;
|
|
88
|
+
/**
|
|
89
|
+
* @param stateProvider Where state is read from and written to.
|
|
90
|
+
*/
|
|
8
91
|
constructor(stateProvider: IStateProvider);
|
|
92
|
+
/**
|
|
93
|
+
* Clears what an external resource's action recorded.
|
|
94
|
+
*
|
|
95
|
+
* @internal
|
|
96
|
+
*/
|
|
97
|
+
deleteExternalResourceState(resourceId: string): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* The id of the lock currently held, or `undefined` when the app is unlocked.
|
|
100
|
+
*/
|
|
9
101
|
getAppLock(): Promise<string | undefined>;
|
|
102
|
+
/**
|
|
103
|
+
* What an external resource's action made of it, if `commit` has not folded that into the resource
|
|
104
|
+
* graph yet. Undefined once it has, or before the action has ever run.
|
|
105
|
+
*
|
|
106
|
+
* @internal
|
|
107
|
+
*/
|
|
108
|
+
getExternalResourceState(resourceId: string): Promise<ExternalResourceStateFile | undefined>;
|
|
109
|
+
/**
|
|
110
|
+
* Reads the model graph. Returns an empty graph when no state exists yet.
|
|
111
|
+
*/
|
|
10
112
|
getModelState(stateFileName: string, { freeze }?: {
|
|
11
113
|
freeze?: boolean;
|
|
12
|
-
}): Promise<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
114
|
+
}): Promise<ModelStateFile>;
|
|
115
|
+
/**
|
|
116
|
+
* The response of one resource: what an external resource's action published and `commit` has not
|
|
117
|
+
* recorded yet, falling back to what the last commit recorded. Undefined when neither holds it.
|
|
118
|
+
*
|
|
119
|
+
* @internal
|
|
120
|
+
*/
|
|
121
|
+
getResourceResponse(resourceId: string): Promise<Record<string, string> | undefined>;
|
|
122
|
+
/**
|
|
123
|
+
* Reads a resource graph. Returns an empty graph when no state exists yet.
|
|
124
|
+
*/
|
|
16
125
|
getResourceState(stateFileName: string, { freeze }?: {
|
|
17
126
|
freeze?: boolean;
|
|
18
|
-
}): Promise<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
127
|
+
}): Promise<ResourceStateFile>;
|
|
128
|
+
/**
|
|
129
|
+
* Reads a state file as-is.
|
|
130
|
+
*
|
|
131
|
+
* @param stateFileName The file's name in the state provider.
|
|
132
|
+
* @param defaultValue Returned instead of throwing when the file does not exist.
|
|
133
|
+
*/
|
|
22
134
|
getState(stateFileName: string, defaultValue?: any): Promise<Buffer>;
|
|
135
|
+
/**
|
|
136
|
+
* Whether `lockId` is the lock currently held.
|
|
137
|
+
*
|
|
138
|
+
* @throws {@link TransactionError} With the message `Invalid lock ID!` when a different lock is held.
|
|
139
|
+
*/
|
|
23
140
|
isAppLocked(lockId: string): Promise<boolean>;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
141
|
+
/**
|
|
142
|
+
* The resource id of every external resource record a `commit` has not folded into the resource
|
|
143
|
+
* graph yet.
|
|
144
|
+
*
|
|
145
|
+
* A record is written the moment an action succeeds and cleared by the commit that records it, so
|
|
146
|
+
* one still here belongs to a run that did not finish.
|
|
147
|
+
*
|
|
148
|
+
* @internal
|
|
149
|
+
*/
|
|
150
|
+
listExternalResourceStateIds(): Promise<string[]>;
|
|
151
|
+
/**
|
|
152
|
+
* The names of the state files whose name starts with `prefix`. See {@link IStateProvider.listStates}.
|
|
153
|
+
*/
|
|
154
|
+
listStates(prefix: string): Promise<string[]>;
|
|
155
|
+
/**
|
|
156
|
+
* Takes the app lock and returns its id. With `lockId`, resumes the run already holding it.
|
|
157
|
+
*
|
|
158
|
+
* A new lock is refused while the state holds a journal file of any command but `generate`,
|
|
159
|
+
* `validate` or `lock`: a run that finished without its journal being archived.
|
|
160
|
+
*
|
|
161
|
+
* @throws {@link AppLockError}
|
|
162
|
+
* * When a lock is held, naming the id that holds it.
|
|
163
|
+
* * When `lockId` is given and is not the lock held.
|
|
164
|
+
* * When the state holds journal files of an unfinished run.
|
|
165
|
+
*/
|
|
166
|
+
lockApp(lockId?: string): ReturnType<IStateProvider['lockApp']>;
|
|
167
|
+
/**
|
|
168
|
+
* Brings the state up to the newest a run may plan against. See {@link IStateProvider.refreshState}.
|
|
169
|
+
*/
|
|
170
|
+
refreshState(): Promise<Awaited<ReturnType<IStateProvider['refreshState']>>>;
|
|
171
|
+
/**
|
|
172
|
+
* Records what an external resource's action made of it. The next run reads it back rather than
|
|
173
|
+
* asking the resource graph, which does not learn any of this until `commit`.
|
|
174
|
+
*
|
|
175
|
+
* @internal
|
|
176
|
+
*/
|
|
177
|
+
saveExternalResourceState(resourceId: string, state: ExternalResourceStateFile): Promise<void>;
|
|
178
|
+
/**
|
|
179
|
+
* @internal
|
|
180
|
+
*/
|
|
181
|
+
saveModelState(stateFileName: string, data: ModelSerializedOutput, userData: ModelStateUserData): Promise<void>;
|
|
182
|
+
/**
|
|
183
|
+
* @internal
|
|
184
|
+
*/
|
|
185
|
+
saveResourceState(stateFileName: string, data: ResourceSerializedOutput, userData: ResourceStateUserData): Promise<void>;
|
|
186
|
+
/**
|
|
187
|
+
* Writes state files as-is and as one change, copying each one given a `filePath` and deleting each
|
|
188
|
+
* one given no `data`. Listeners of {@link StateFilesSavingEvent} may add files to the change first.
|
|
189
|
+
*/
|
|
190
|
+
saveStates(stateFiles: Parameters<IStateProvider['saveStates']>[0]): Promise<void>;
|
|
191
|
+
/**
|
|
192
|
+
* Releases the app lock, then archives the run's journal. Unlocking an app that is not locked is
|
|
193
|
+
* not an error.
|
|
194
|
+
*
|
|
195
|
+
* In order: listeners of {@link AppUnlockingEvent} write the last of the run, and a failure there
|
|
196
|
+
* keeps the lock held; the lock is released, which seals the run; every journal file moves to
|
|
197
|
+
* `archives/<lockId>/`, a cleanup on this machine whose failure is reported on stderr rather than
|
|
198
|
+
* thrown.
|
|
199
|
+
*
|
|
200
|
+
* @throws {@link TransactionError} With the message `Invalid lock ID!` when a different lock is held.
|
|
201
|
+
*/
|
|
30
202
|
unlockApp(lockId: string): Promise<void>;
|
|
31
|
-
|
|
203
|
+
/**
|
|
204
|
+
* @internal
|
|
205
|
+
*/
|
|
206
|
+
private externalResourceStateFileName;
|
|
32
207
|
}
|
|
33
208
|
/**
|
|
34
209
|
* @internal
|
|
35
210
|
*/
|
|
36
211
|
export declare class StateManagementServiceFactory {
|
|
37
212
|
private static instance;
|
|
213
|
+
/**
|
|
214
|
+
* @internal
|
|
215
|
+
*/
|
|
38
216
|
static create(stateProvider?: IStateProvider): Promise<StateManagementService>;
|
|
39
217
|
}
|
|
@@ -4,24 +4,88 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
+
import { createHash } from 'node:crypto';
|
|
7
8
|
import { Factory } from '../../decorators/factory.decorator.js';
|
|
8
|
-
import { TransactionError } from '../../errors/index.js';
|
|
9
|
+
import { AppLockError, TransactionError } from '../../errors/index.js';
|
|
10
|
+
import { AppLockRefusedEvent, AppLockTakenEvent, AppUnlockedEvent, AppUnlockingEvent, StateFilesSavedEvent, StateFilesSavingEvent, StateRefreshedEvent, } from '../../events/index.js';
|
|
11
|
+
import { EventService } from '../event/event.service.js';
|
|
12
|
+
import { JOURNAL_COMMANDS_BEFORE_LOCK, JOURNAL_STATE_FILE_NAME_PREFIX, } from './state-provider.interface.js';
|
|
9
13
|
/**
|
|
14
|
+
* Serializes one state file.
|
|
15
|
+
*
|
|
16
|
+
* Formatted rather than written as a single line, because these files are committed: a reviewer
|
|
17
|
+
* reading the pull request that produced them sees which entries moved, and a merge conflict lands
|
|
18
|
+
* on the entries that actually collide instead of on the whole file.
|
|
19
|
+
*/
|
|
20
|
+
function serializeState(stateFile) {
|
|
21
|
+
return Buffer.from(JSON.stringify(stateFile, null, 2));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Reads and writes Octo's state files through the configured {@link IStateProvider}.
|
|
25
|
+
*
|
|
26
|
+
* Resolve it from the {@link Container} when you need to inspect what the last run recorded.
|
|
27
|
+
* Octo manages its own state files, so writing through this service is rarely the right move.
|
|
28
|
+
*
|
|
10
29
|
* @group Services/State Management
|
|
11
30
|
*/
|
|
12
31
|
export class StateManagementService {
|
|
32
|
+
/**
|
|
33
|
+
* @param stateProvider Where state is read from and written to.
|
|
34
|
+
*/
|
|
13
35
|
constructor(stateProvider) {
|
|
36
|
+
/**
|
|
37
|
+
* The resource graph as it stands after the last commit.
|
|
38
|
+
*/
|
|
39
|
+
this.actualResourceStateFileName = 'resources-actual.json';
|
|
40
|
+
/**
|
|
41
|
+
* The prefix of each record an external resource's action writes, until `commit` folds it into
|
|
42
|
+
* the resource graph.
|
|
43
|
+
*/
|
|
44
|
+
this.externalResourceStateFileNamePrefix = 'resource-state-';
|
|
45
|
+
/**
|
|
46
|
+
* The model graph as it stands after the last commit.
|
|
47
|
+
*/
|
|
48
|
+
this.modelStateFileName = 'models.json';
|
|
49
|
+
/**
|
|
50
|
+
* The resource graph as intent described it on the last commit.
|
|
51
|
+
*/
|
|
52
|
+
this.oldResourceStateFileName = 'resources-old.json';
|
|
14
53
|
this.stateProvider = stateProvider;
|
|
15
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Clears what an external resource's action recorded.
|
|
57
|
+
*
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
60
|
+
async deleteExternalResourceState(resourceId) {
|
|
61
|
+
await this.saveStates([{ data: undefined, stateFileName: this.externalResourceStateFileName(resourceId) }]);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The id of the lock currently held, or `undefined` when the app is unlocked.
|
|
65
|
+
*/
|
|
16
66
|
async getAppLock() {
|
|
17
67
|
return this.stateProvider.getAppLock();
|
|
18
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* What an external resource's action made of it, if `commit` has not folded that into the resource
|
|
71
|
+
* graph yet. Undefined once it has, or before the action has ever run.
|
|
72
|
+
*
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
async getExternalResourceState(resourceId) {
|
|
76
|
+
const recordedState = await this.getState(this.externalResourceStateFileName(resourceId), Buffer.from(''));
|
|
77
|
+
return recordedState.length > 0 ? JSON.parse(recordedState.toString()) : undefined;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Reads the model graph. Returns an empty graph when no state exists yet.
|
|
81
|
+
*/
|
|
19
82
|
async getModelState(stateFileName, { freeze = true } = {}) {
|
|
20
83
|
const defaultValue = {
|
|
21
84
|
data: {
|
|
22
85
|
anchors: [],
|
|
23
86
|
dependencies: [],
|
|
24
87
|
models: {},
|
|
88
|
+
modules: {},
|
|
25
89
|
overlays: [],
|
|
26
90
|
},
|
|
27
91
|
userData: {},
|
|
@@ -39,6 +103,30 @@ export class StateManagementService {
|
|
|
39
103
|
}
|
|
40
104
|
}
|
|
41
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* The response of one resource: what an external resource's action published and `commit` has not
|
|
108
|
+
* recorded yet, falling back to what the last commit recorded. Undefined when neither holds it.
|
|
109
|
+
*
|
|
110
|
+
* @internal
|
|
111
|
+
*/
|
|
112
|
+
async getResourceResponse(resourceId) {
|
|
113
|
+
const recordedState = await this.getExternalResourceState(resourceId);
|
|
114
|
+
if (recordedState) {
|
|
115
|
+
return recordedState.response;
|
|
116
|
+
}
|
|
117
|
+
const { data } = await this.getResourceState(this.actualResourceStateFileName);
|
|
118
|
+
const serializedResource = Object.values(data.resources).find((r) => r.resource.resourceId === resourceId);
|
|
119
|
+
if (!serializedResource) {
|
|
120
|
+
return undefined;
|
|
121
|
+
}
|
|
122
|
+
return Object.entries(serializedResource.resource.response).reduce((accumulator, [key, value]) => {
|
|
123
|
+
accumulator[key] = String(value);
|
|
124
|
+
return accumulator;
|
|
125
|
+
}, {});
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Reads a resource graph. Returns an empty graph when no state exists yet.
|
|
129
|
+
*/
|
|
42
130
|
async getResourceState(stateFileName, { freeze = true } = {}) {
|
|
43
131
|
const defaultValue = {
|
|
44
132
|
data: {
|
|
@@ -60,6 +148,12 @@ export class StateManagementService {
|
|
|
60
148
|
}
|
|
61
149
|
}
|
|
62
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Reads a state file as-is.
|
|
153
|
+
*
|
|
154
|
+
* @param stateFileName The file's name in the state provider.
|
|
155
|
+
* @param defaultValue Returned instead of throwing when the file does not exist.
|
|
156
|
+
*/
|
|
63
157
|
async getState(stateFileName, defaultValue) {
|
|
64
158
|
try {
|
|
65
159
|
return await this.stateProvider.getState(stateFileName);
|
|
@@ -73,32 +167,187 @@ export class StateManagementService {
|
|
|
73
167
|
}
|
|
74
168
|
}
|
|
75
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Whether `lockId` is the lock currently held.
|
|
172
|
+
*
|
|
173
|
+
* @throws {@link TransactionError} With the message `Invalid lock ID!` when a different lock is held.
|
|
174
|
+
*/
|
|
76
175
|
async isAppLocked(lockId) {
|
|
77
176
|
return this.stateProvider.isAppLocked(lockId);
|
|
78
177
|
}
|
|
79
|
-
|
|
80
|
-
|
|
178
|
+
/**
|
|
179
|
+
* The resource id of every external resource record a `commit` has not folded into the resource
|
|
180
|
+
* graph yet.
|
|
181
|
+
*
|
|
182
|
+
* A record is written the moment an action succeeds and cleared by the commit that records it, so
|
|
183
|
+
* one still here belongs to a run that did not finish.
|
|
184
|
+
*
|
|
185
|
+
* @internal
|
|
186
|
+
*/
|
|
187
|
+
async listExternalResourceStateIds() {
|
|
188
|
+
const stateFileNames = await this.stateProvider.listStates(this.externalResourceStateFileNamePrefix);
|
|
189
|
+
return stateFileNames
|
|
190
|
+
.filter((stateFileName) => stateFileName.endsWith('.json'))
|
|
191
|
+
.map((stateFileName) => stateFileName.slice(this.externalResourceStateFileNamePrefix.length, -'.json'.length).replace(/\./g, '/'));
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* The names of the state files whose name starts with `prefix`. See {@link IStateProvider.listStates}.
|
|
195
|
+
*/
|
|
196
|
+
async listStates(prefix) {
|
|
197
|
+
return this.stateProvider.listStates(prefix);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Takes the app lock and returns its id. With `lockId`, resumes the run already holding it.
|
|
201
|
+
*
|
|
202
|
+
* A new lock is refused while the state holds a journal file of any command but `generate`,
|
|
203
|
+
* `validate` or `lock`: a run that finished without its journal being archived.
|
|
204
|
+
*
|
|
205
|
+
* @throws {@link AppLockError}
|
|
206
|
+
* * When a lock is held, naming the id that holds it.
|
|
207
|
+
* * When `lockId` is given and is not the lock held.
|
|
208
|
+
* * When the state holds journal files of an unfinished run.
|
|
209
|
+
*/
|
|
210
|
+
async lockApp(lockId) {
|
|
211
|
+
const eventService = EventService.getInstance();
|
|
212
|
+
let lock;
|
|
213
|
+
try {
|
|
214
|
+
// Refuse a new lock over journal files no lock owns.
|
|
215
|
+
if (!lockId && !(await this.stateProvider.getAppLock())) {
|
|
216
|
+
const unfinishedStateFileNames = (await this.stateProvider.listStates(JOURNAL_STATE_FILE_NAME_PREFIX)).filter((stateFileName) => !JOURNAL_COMMANDS_BEFORE_LOCK.includes(stateFileName.split('.')[2]));
|
|
217
|
+
if (unfinishedStateFileNames.length > 0) {
|
|
218
|
+
throw new AppLockError(`State holds the journal of a run that was never archived: ${unfinishedStateFileNames.join(', ')}! ` +
|
|
219
|
+
'Move or delete these files, then lock again.', { reason: 'unfinished', stateFileNames: unfinishedStateFileNames });
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
lock = await this.stateProvider.lockApp(lockId);
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
if (error instanceof AppLockError) {
|
|
226
|
+
await eventService.emitAndWait(new AppLockRefusedEvent(undefined, {
|
|
227
|
+
holder: error.holder,
|
|
228
|
+
newestCommitId: error.newestCommitId,
|
|
229
|
+
reason: error.reason,
|
|
230
|
+
refreshedCommitId: error.refreshedCommitId,
|
|
231
|
+
stateFileNames: error.stateFileNames,
|
|
232
|
+
}));
|
|
233
|
+
}
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
await eventService.emitAndWait(new AppLockTakenEvent(undefined, {
|
|
237
|
+
commitId: lock.commitId,
|
|
238
|
+
lockId: lock.lockId,
|
|
239
|
+
resumed: !!lockId,
|
|
240
|
+
resumedFrom: lock.resumedFrom,
|
|
241
|
+
}));
|
|
242
|
+
return lock;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Brings the state up to the newest a run may plan against. See {@link IStateProvider.refreshState}.
|
|
246
|
+
*/
|
|
247
|
+
async refreshState() {
|
|
248
|
+
const refreshed = await this.stateProvider.refreshState();
|
|
249
|
+
await EventService.getInstance().emitAndWait(new StateRefreshedEvent(undefined, refreshed));
|
|
250
|
+
return refreshed;
|
|
81
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Records what an external resource's action made of it. The next run reads it back rather than
|
|
254
|
+
* asking the resource graph, which does not learn any of this until `commit`.
|
|
255
|
+
*
|
|
256
|
+
* @internal
|
|
257
|
+
*/
|
|
258
|
+
async saveExternalResourceState(resourceId, state) {
|
|
259
|
+
await this.saveStates([
|
|
260
|
+
{ data: Buffer.from(JSON.stringify(state)), stateFileName: this.externalResourceStateFileName(resourceId) },
|
|
261
|
+
]);
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* @internal
|
|
265
|
+
*/
|
|
82
266
|
async saveModelState(stateFileName, data, userData) {
|
|
83
|
-
await this.
|
|
267
|
+
await this.saveStates([{ data: serializeState({ data, userData }), stateFileName }]);
|
|
84
268
|
}
|
|
269
|
+
/**
|
|
270
|
+
* @internal
|
|
271
|
+
*/
|
|
85
272
|
async saveResourceState(stateFileName, data, userData) {
|
|
86
|
-
await this.
|
|
273
|
+
await this.saveStates([{ data: serializeState({ data, userData }), stateFileName }]);
|
|
87
274
|
}
|
|
88
|
-
|
|
89
|
-
|
|
275
|
+
/**
|
|
276
|
+
* Writes state files as-is and as one change, copying each one given a `filePath` and deleting each
|
|
277
|
+
* one given no `data`. Listeners of {@link StateFilesSavingEvent} may add files to the change first.
|
|
278
|
+
*/
|
|
279
|
+
async saveStates(stateFiles) {
|
|
280
|
+
const eventService = EventService.getInstance();
|
|
281
|
+
await eventService.emitAndWait(new StateFilesSavingEvent(undefined, { stateFiles }));
|
|
282
|
+
await this.stateProvider.saveStates(stateFiles);
|
|
283
|
+
eventService.emit(new StateFilesSavedEvent(undefined, {
|
|
284
|
+
stateFiles: stateFiles.map((stateFile) => 'filePath' in stateFile
|
|
285
|
+
? { data: undefined, filePath: stateFile.filePath, md5: undefined, stateFileName: stateFile.stateFileName }
|
|
286
|
+
: {
|
|
287
|
+
data: stateFile.data,
|
|
288
|
+
md5: stateFile.data === undefined ? undefined : createHash('md5').update(stateFile.data).digest('hex'),
|
|
289
|
+
stateFileName: stateFile.stateFileName,
|
|
290
|
+
}),
|
|
291
|
+
}));
|
|
90
292
|
}
|
|
293
|
+
/**
|
|
294
|
+
* Releases the app lock, then archives the run's journal. Unlocking an app that is not locked is
|
|
295
|
+
* not an error.
|
|
296
|
+
*
|
|
297
|
+
* In order: listeners of {@link AppUnlockingEvent} write the last of the run, and a failure there
|
|
298
|
+
* keeps the lock held; the lock is released, which seals the run; every journal file moves to
|
|
299
|
+
* `archives/<lockId>/`, a cleanup on this machine whose failure is reported on stderr rather than
|
|
300
|
+
* thrown.
|
|
301
|
+
*
|
|
302
|
+
* @throws {@link TransactionError} With the message `Invalid lock ID!` when a different lock is held.
|
|
303
|
+
*/
|
|
91
304
|
async unlockApp(lockId) {
|
|
92
|
-
|
|
305
|
+
const eventService = EventService.getInstance();
|
|
306
|
+
await eventService.emitAndWait(new AppUnlockingEvent(undefined, { lockId }));
|
|
307
|
+
// Stop when no lock is held, and refuse to touch the journal of another.
|
|
308
|
+
const heldLockId = await this.stateProvider.getAppLock();
|
|
309
|
+
if (!heldLockId) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
if (heldLockId !== lockId) {
|
|
313
|
+
throw new TransactionError('Invalid lock ID!');
|
|
314
|
+
}
|
|
315
|
+
await this.stateProvider.unlockApp(lockId);
|
|
316
|
+
// Archive the run's journal, names unchanged.
|
|
317
|
+
try {
|
|
318
|
+
const stateFiles = [];
|
|
319
|
+
for (const stateFileName of await this.stateProvider.listStates(JOURNAL_STATE_FILE_NAME_PREFIX)) {
|
|
320
|
+
stateFiles.push({
|
|
321
|
+
data: await this.stateProvider.getState(stateFileName),
|
|
322
|
+
stateFileName: `archives/${lockId}/${stateFileName}`,
|
|
323
|
+
}, { data: undefined, stateFileName });
|
|
324
|
+
}
|
|
325
|
+
if (stateFiles.length > 0) {
|
|
326
|
+
await this.saveStates(stateFiles);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
process.stderr.write(`Failed to archive the journal of lock "${lockId}": ${error?.message ?? String(error)}\n`);
|
|
331
|
+
}
|
|
332
|
+
await eventService.emitAndWait(new AppUnlockedEvent(undefined, { lockId }));
|
|
93
333
|
}
|
|
94
|
-
|
|
95
|
-
|
|
334
|
+
/**
|
|
335
|
+
* @internal
|
|
336
|
+
*/
|
|
337
|
+
externalResourceStateFileName(resourceId) {
|
|
338
|
+
// A resource id is not a file name - it carries `/` where a resource is named after a path, and
|
|
339
|
+
// a state file name is one thing in a directory, in an object store, and in a URL path segment.
|
|
340
|
+
// A resource id holds no `.`, so the separator stands in for the slash and reads back as one.
|
|
341
|
+
return `${this.externalResourceStateFileNamePrefix}${resourceId.replace(/\//g, '.')}.json`;
|
|
96
342
|
}
|
|
97
343
|
}
|
|
98
344
|
/**
|
|
99
345
|
* @internal
|
|
100
346
|
*/
|
|
101
347
|
let StateManagementServiceFactory = class StateManagementServiceFactory {
|
|
348
|
+
/**
|
|
349
|
+
* @internal
|
|
350
|
+
*/
|
|
102
351
|
static async create(stateProvider) {
|
|
103
352
|
if (!this.instance) {
|
|
104
353
|
if (!stateProvider) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-management.service.js","sourceRoot":"","sources":["../../../src/services/state-management/state-management.service.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"state-management.service.js","sourceRoot":"","sources":["../../../src/services/state-management/state-management.service.ts"],"names":[],"mappings":"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"}
|