@quadnix/octo 0.1.0 → 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/README.md +108 -21
- package/dist/app.type.d.ts +141 -22
- package/dist/app.type.js.map +1 -1
- package/dist/decorators/model.decorator.d.ts +3 -5
- package/dist/decorators/model.decorator.js +1 -6
- package/dist/decorators/model.decorator.js.map +1 -1
- package/dist/decorators/on-event.decorator.d.ts +2 -2
- 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/errors/schema.error.d.ts +8 -1
- package/dist/errors/schema.error.js +5 -1
- package/dist/errors/schema.error.js.map +1 -1
- package/dist/errors/terraform.error.d.ts +4 -3
- package/dist/errors/terraform.error.js +4 -3
- package/dist/errors/terraform.error.js.map +1 -1
- package/dist/errors/transaction.error.d.ts +32 -2
- package/dist/errors/transaction.error.js +22 -0
- package/dist/errors/transaction.error.js.map +1 -1
- package/dist/events/action.event.d.ts +8 -2
- package/dist/events/action.event.js +2 -2
- 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 +7 -5
- package/dist/events/event.model.js +5 -3
- package/dist/events/event.model.js.map +1 -1
- package/dist/events/hook/commit.hook.event.d.ts +1 -1
- package/dist/events/hook/commit.hook.event.js.map +1 -1
- package/dist/events/hook/hook.event.d.ts +1 -1
- package/dist/events/hook/hook.event.js.map +1 -1
- package/dist/events/hook/model.hook.event.d.ts +1 -1
- package/dist/events/hook/model.hook.event.js.map +1 -1
- package/dist/events/hook/resource.hook.event.d.ts +1 -1
- package/dist/events/hook/resource.hook.event.js.map +1 -1
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.js +2 -0
- package/dist/events/index.js.map +1 -1
- package/dist/events/mode-result.event.d.ts +1 -1
- package/dist/events/mode-result.event.js.map +1 -1
- package/dist/events/mode.event.d.ts +8 -4
- package/dist/events/mode.event.js.map +1 -1
- package/dist/events/module.event.d.ts +7 -3
- package/dist/events/module.event.js +3 -2
- package/dist/events/module.event.js.map +1 -1
- package/dist/events/registration.event.d.ts +1 -1
- package/dist/events/registration.event.js.map +1 -1
- package/dist/events/serialization.event.d.ts +1 -1
- 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 +37 -1
- package/dist/events/terraform.event.js +24 -0
- package/dist/events/terraform.event.js.map +1 -1
- package/dist/events/transaction.event.d.ts +3 -3
- package/dist/events/transaction.event.js +1 -1
- package/dist/events/transaction.event.js.map +1 -1
- package/dist/functions/container/container.js +1 -1
- package/dist/functions/container/container.js.map +1 -1
- package/dist/functions/container/test-container.js +2 -2
- package/dist/functions/container/test-container.js.map +1 -1
- package/dist/functions/dependency/dependency.d.ts +9 -22
- package/dist/functions/dependency/dependency.js +5 -1
- package/dist/functions/dependency/dependency.js.map +1 -1
- package/dist/functions/diff/diff.d.ts +14 -7
- package/dist/functions/diff/diff.js.map +1 -1
- package/dist/functions/node/node-action.abstract.d.ts +8 -10
- package/dist/functions/node/node-action.abstract.js +10 -16
- package/dist/functions/node/node-action.abstract.js.map +1 -1
- package/dist/functions/node/node.abstract.js +21 -10
- package/dist/functions/node/node.abstract.js.map +1 -1
- package/dist/functions/node/node.interface.d.ts +2 -1
- package/dist/functions/schema/schema.js +1 -1
- package/dist/functions/schema/schema.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.js +6 -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 +4 -3
- package/dist/main.js +27 -11
- package/dist/main.js.map +1 -1
- package/dist/models/account/account.model.d.ts +6 -0
- package/dist/models/account/account.model.js +16 -0
- package/dist/models/account/account.model.js.map +1 -1
- package/dist/models/app/app.model.d.ts +0 -10
- package/dist/models/app/app.model.js +0 -30
- package/dist/models/app/app.model.js.map +1 -1
- package/dist/models/deployment/deployment.schema.d.ts +4 -0
- package/dist/models/deployment/deployment.schema.js +4 -0
- package/dist/models/deployment/deployment.schema.js.map +1 -1
- package/dist/models/environment/environment.model.d.ts +2 -2
- package/dist/models/environment/environment.model.js +2 -2
- package/dist/models/execution/execution.model.d.ts +1 -1
- package/dist/models/execution/execution.model.js +1 -1
- package/dist/models/image/image.model.d.ts +4 -3
- package/dist/models/image/image.model.js +7 -6
- package/dist/models/image/image.model.js.map +1 -1
- package/dist/models/model.abstract.js +1 -1
- package/dist/models/model.abstract.js.map +1 -1
- package/dist/models/pipeline/pipeline.model.d.ts +1 -1
- package/dist/models/pipeline/pipeline.model.js +1 -1
- package/dist/models/server/server.model.d.ts +2 -2
- package/dist/models/server/server.model.js +2 -2
- package/dist/models/service/service.model.d.ts +28 -11
- package/dist/models/service/service.model.js +56 -16
- package/dist/models/service/service.model.js.map +1 -1
- package/dist/models/service/service.schema.d.ts +46 -2
- package/dist/models/service/service.schema.js +54 -2
- package/dist/models/service/service.schema.js.map +1 -1
- package/dist/modes/commit.mode.d.ts +2 -2
- package/dist/modes/commit.mode.js +2 -2
- package/dist/modes/generate.mode.d.ts +2 -1
- package/dist/modes/generate.mode.js +3 -2
- package/dist/modes/generate.mode.js.map +1 -1
- package/dist/modes/run-action.mode.d.ts +1 -1
- package/dist/modes/run-action.mode.js +1 -1
- package/dist/modes/validate.mode.d.ts +24 -0
- package/dist/modes/validate.mode.js +89 -11
- package/dist/modes/validate.mode.js.map +1 -1
- package/dist/modules/module.container.d.ts +7 -1
- package/dist/modules/module.container.js +41 -5
- package/dist/modules/module.container.js.map +1 -1
- package/dist/modules/test-module.container.js +35 -83
- package/dist/modules/test-module.container.js.map +1 -1
- package/dist/overlays/overlay.abstract.js +1 -1
- package/dist/overlays/overlay.abstract.js.map +1 -1
- package/dist/resources/resource-action.interface.d.ts +4 -2
- package/dist/resources/resource.abstract.d.ts +50 -8
- package/dist/resources/resource.abstract.js +63 -32
- 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 +11 -1
- package/dist/resources/resource.schema.js +11 -1
- package/dist/resources/resource.schema.js.map +1 -1
- package/dist/services/event/event.service.d.ts +2 -2
- package/dist/services/event/event.service.js.map +1 -1
- package/dist/services/input/input.service.d.ts +30 -2
- package/dist/services/input/input.service.js +71 -4
- package/dist/services/input/input.service.js.map +1 -1
- package/dist/services/serialization/model/model-serialization.service.d.ts +4 -6
- package/dist/services/serialization/model/model-serialization.service.js +20 -17
- package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
- package/dist/services/serialization/resource/resource-serialization.service.d.ts +7 -6
- package/dist/services/serialization/resource/resource-serialization.service.js +25 -12
- package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
- package/dist/services/state-management/local.state-provider.d.ts +25 -9
- package/dist/services/state-management/local.state-provider.js +127 -21
- 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 +83 -40
- package/dist/services/state-management/state-management.service.js +130 -26
- package/dist/services/state-management/state-management.service.js.map +1 -1
- package/dist/services/state-management/state-provider.interface.d.ts +50 -9
- 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 +32 -9
- package/dist/services/state-management/terraform-state.service.js +64 -21
- package/dist/services/state-management/terraform-state.service.js.map +1 -1
- package/dist/services/state-management/test.state-provider.d.ts +11 -10
- package/dist/services/state-management/test.state-provider.js +35 -14
- package/dist/services/state-management/test.state-provider.js.map +1 -1
- package/dist/services/terraform/terraform.service.d.ts +57 -3
- package/dist/services/terraform/terraform.service.js +95 -8
- package/dist/services/terraform/terraform.service.js.map +1 -1
- package/dist/services/terraform/terraform.type.js +1 -1
- package/dist/services/terraform/terraform.type.js.map +1 -1
- package/dist/services/transaction/transaction.service.d.ts +29 -5
- package/dist/services/transaction/transaction.service.js +198 -34
- package/dist/services/transaction/transaction.service.js.map +1 -1
- package/dist/services/validation/validation.service.d.ts +2 -2
- package/dist/{functions → utilities}/diff/diff.utility.d.ts +2 -1
- package/dist/{functions → utilities}/diff/diff.utility.js +4 -3
- package/dist/utilities/diff/diff.utility.js.map +1 -0
- package/dist/utilities/file/file.utility.d.ts +6 -7
- package/dist/utilities/file/file.utility.js +13 -68
- package/dist/utilities/file/file.utility.js.map +1 -1
- package/dist/utilities/hcl/hcl.utility.d.ts +83 -16
- package/dist/utilities/hcl/hcl.utility.js +200 -27
- package/dist/utilities/hcl/hcl.utility.js.map +1 -1
- 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/string/string.utility.d.ts +23 -3
- package/dist/utilities/string/string.utility.js +29 -3
- package/dist/utilities/string/string.utility.js.map +1 -1
- package/dist/utilities/terraform/terraform.utility.d.ts +70 -21
- package/dist/utilities/terraform/terraform.utility.js +255 -66
- package/dist/utilities/terraform/terraform.utility.js.map +1 -1
- package/dist/utilities/test-helpers/test-classes.d.ts +19 -0
- package/dist/utilities/test-helpers/test-classes.js +22 -0
- 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 +25 -12
- package/dist/utilities/test-helpers/test-models.js.map +1 -1
- package/dist/utilities/test-helpers/test-modes.d.ts +1 -1
- package/dist/utilities/test-helpers/test-modes.js +36 -13
- package/dist/utilities/test-helpers/test-modes.js.map +1 -1
- package/dist/utilities/test-helpers/test-modules.d.ts +6 -0
- package/dist/utilities/test-helpers/test-modules.js +6 -0
- package/dist/utilities/test-helpers/test-modules.js.map +1 -1
- package/dist/utilities/test-helpers/test-overlays.d.ts +3 -1
- package/dist/utilities/test-helpers/test-overlays.js +8 -2
- package/dist/utilities/test-helpers/test-overlays.js.map +1 -1
- package/dist/utilities/test-helpers/test-resources.d.ts +4 -2
- package/dist/utilities/test-helpers/test-resources.js +22 -20
- package/dist/utilities/test-helpers/test-resources.js.map +1 -1
- package/package.json +7 -2
- package/dist/functions/diff/diff.utility.js.map +0 -1
- package/dist/services/state-management/file-app-lock.utility.d.ts +0 -43
- package/dist/services/state-management/file-app-lock.utility.js +0 -124
- package/dist/services/state-management/file-app-lock.utility.js.map +0 -1
- package/dist/services/state-management/local-encryption.state-provider.d.ts +0 -71
- package/dist/services/state-management/local-encryption.state-provider.js +0 -116
- package/dist/services/state-management/local-encryption.state-provider.js.map +0 -1
|
@@ -4,24 +4,34 @@ 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 {
|
|
8
|
-
import {
|
|
7
|
+
import { spawn } from 'node:child_process';
|
|
8
|
+
import { existsSync } from 'node:fs';
|
|
9
|
+
import { mkdtemp, readFile, readdir, realpath, rm, writeFile } from 'node:fs/promises';
|
|
9
10
|
import { tmpdir } from 'node:os';
|
|
10
|
-
import { join } from 'node:path';
|
|
11
|
+
import { join, resolve } from 'node:path';
|
|
11
12
|
import { Factory } from '../../decorators/factory.decorator.js';
|
|
12
13
|
import { TerraformCommandError } from '../../errors/index.js';
|
|
13
|
-
import { TerraformCommandFinishedEvent, TerraformCommandStartedEvent } from '../../events/index.js';
|
|
14
|
+
import { TerraformCommandFinishedEvent, TerraformCommandStartedEvent, TerraformProcessExitedEvent, TerraformProcessOutputEvent, TerraformProcessStartedEvent, } from '../../events/index.js';
|
|
14
15
|
import { Container } from '../../functions/container/container.js';
|
|
15
16
|
import { EventService } from '../../services/event/event.service.js';
|
|
16
17
|
import { TerraformStateService } from '../../services/state-management/terraform-state.service.js';
|
|
17
18
|
import { PROJECT_ROOT_VARIABLE_NAME } from '../../services/terraform/terraform.type.js';
|
|
19
|
+
const DEFAULT_STATE_CHECK_IN_INTERVAL_IN_MS = 10 * 1000;
|
|
18
20
|
const DEFAULT_TIMEOUT_IN_MS = 60 * 60 * 1000; // 60 minutes.
|
|
21
|
+
const TERRAGRUNT_LOG_FORMAT =
|
|
22
|
+
// eslint-disable-next-line spellcheck/spell-checker
|
|
23
|
+
"%level(case=upper,width=6) %prefix(path=short-relative,prefix='[',suffix='] ')%tf-path(suffix=': ')%msg(path=relative)";
|
|
24
|
+
const TERRAFORM_STATE_FILE_NAME = 'terraform.tfstate';
|
|
19
25
|
/**
|
|
20
26
|
* The commands that change infrastructure, and so are left unbounded unless the caller asks for a
|
|
21
27
|
* bound. Everything else only reads, where a timeout costs nothing and catches a hang.
|
|
22
28
|
*/
|
|
23
29
|
const MUTATING_COMMANDS = new Set(['apply', 'destroy']);
|
|
24
|
-
|
|
30
|
+
/**
|
|
31
|
+
* How much of a process's stderr is kept for the error a failure throws. Everything it wrote goes out
|
|
32
|
+
* as it is written, in {@link TerraformProcessOutputEvent}.
|
|
33
|
+
*/
|
|
34
|
+
const STDERR_TAIL_LENGTH = 64 * 1024;
|
|
25
35
|
/**
|
|
26
36
|
* Octo's single interface to the terraform and terragrunt binaries.
|
|
27
37
|
*
|
|
@@ -44,38 +54,44 @@ const MAX_BUFFER = 256 * 1024 * 1024; // 256 KB.
|
|
|
44
54
|
*/
|
|
45
55
|
export class TerraformUtility {
|
|
46
56
|
/**
|
|
47
|
-
*
|
|
48
|
-
|
|
57
|
+
* The id of the last process any instance started, so ids never repeat within one octo process.
|
|
58
|
+
*/
|
|
59
|
+
static { this.lastProcessId = 0; }
|
|
60
|
+
/**
|
|
61
|
+
* @param options Overrides for the binaries invoked, the per-command timeout, and the state
|
|
62
|
+
* check-in interval. `terragruntBinary` defaults to `terragrunt`.
|
|
49
63
|
*
|
|
50
64
|
* `timeoutInMs` defaults to 60 minutes for the commands that only read - `plan`, `output`, `show`.
|
|
51
65
|
* `apply` and `destroy` run unbounded unless it is given: a timeout there turns a slow apply into
|
|
52
66
|
* one killed part way through a mutation, and how long a stack legitimately takes is a fact about
|
|
53
67
|
* that stack rather than something a default can know. What bounds them instead is the caller -
|
|
54
68
|
* a CI job's own timeout, or a person at a terminal.
|
|
69
|
+
*
|
|
70
|
+
* `stateCheckInIntervalInMs` is how often terraform state is checked into the state provider while
|
|
71
|
+
* a command runs, 10 seconds by default. Terraform rewrites it as each resource completes.
|
|
55
72
|
*/
|
|
56
73
|
constructor(options = {}) {
|
|
57
74
|
this.requestedTimeoutInMs = options.timeoutInMs;
|
|
58
75
|
this.options = {
|
|
76
|
+
stateCheckInIntervalInMs: options.stateCheckInIntervalInMs ?? DEFAULT_STATE_CHECK_IN_INTERVAL_IN_MS,
|
|
59
77
|
terraformBinary: options.terraformBinary,
|
|
60
78
|
terragruntBinary: options.terragruntBinary ?? 'terragrunt',
|
|
61
79
|
timeoutInMs: options.timeoutInMs ?? DEFAULT_TIMEOUT_IN_MS,
|
|
62
80
|
};
|
|
63
81
|
}
|
|
64
82
|
/**
|
|
65
|
-
* Runs `terragrunt run
|
|
83
|
+
* Runs `terragrunt run --all -- apply` over every generated module folder.
|
|
66
84
|
*
|
|
67
85
|
* **This changes real infrastructure**, and runs with `-auto-approve`. Use
|
|
68
86
|
* {@link TerraformUtility.findPlannedDestroys} beforehand if a destroy needs confirming.
|
|
69
87
|
*
|
|
70
|
-
* @param
|
|
71
|
-
* tens of minutes, and the buffered result only arrives at the end - without this the caller has
|
|
72
|
-
* nothing to show for the whole run. The chunks are also still accumulated into the result.
|
|
88
|
+
* @param terragruntDir The directory octo generated the module folders into.
|
|
73
89
|
*/
|
|
74
|
-
async apply(terragruntDir
|
|
75
|
-
return this.runAll(terragruntDir, 'apply', ['-input=false', '-auto-approve', ...this.consumeArgs()]
|
|
90
|
+
async apply(terragruntDir) {
|
|
91
|
+
return this.runAll(terragruntDir, 'apply', ['-input=false', '-auto-approve', ...this.consumeArgs()]);
|
|
76
92
|
}
|
|
77
93
|
/**
|
|
78
|
-
* Runs `terragrunt run
|
|
94
|
+
* Runs `terragrunt run --all -- destroy` over every generated module folder.
|
|
79
95
|
*
|
|
80
96
|
* **This tears down real infrastructure**, and runs with `-auto-approve`.
|
|
81
97
|
*/
|
|
@@ -138,10 +154,11 @@ export class TerraformUtility {
|
|
|
138
154
|
return this.runAll(terragruntDir, 'output', this.consumeArgs());
|
|
139
155
|
}
|
|
140
156
|
const composedArgs = this.consumeArgs();
|
|
141
|
-
|
|
157
|
+
const realTerragruntDir = await this.resolveRealPath(terragruntDir);
|
|
158
|
+
return this.withTerraformState(realTerragruntDir, async (moduleIds) => this.emitAround('output', terragruntDir, async () => {
|
|
142
159
|
const outputs = new Map();
|
|
143
160
|
for (const moduleId of moduleIds) {
|
|
144
|
-
const moduleOutputs = await this.readOutputs(join(
|
|
161
|
+
const moduleOutputs = await this.readOutputs(join(realTerragruntDir, moduleId), composedArgs);
|
|
145
162
|
if (moduleOutputs !== undefined) {
|
|
146
163
|
outputs.set(moduleId, moduleOutputs);
|
|
147
164
|
}
|
|
@@ -157,11 +174,12 @@ export class TerraformUtility {
|
|
|
157
174
|
return this.runAll(terragruntDir, 'plan', ['-input=false', ...this.consumeArgs()]);
|
|
158
175
|
}
|
|
159
176
|
const composedArgs = this.consumeArgs();
|
|
160
|
-
|
|
177
|
+
const realTerragruntDir = await this.resolveRealPath(terragruntDir);
|
|
178
|
+
return this.withTerraformState(realTerragruntDir, async (moduleIds) => this.emitAround('plan', terragruntDir, async () => {
|
|
161
179
|
const errors = new Map();
|
|
162
180
|
const plans = new Map();
|
|
163
181
|
for (const moduleId of moduleIds) {
|
|
164
|
-
const result = await this.readPlan(join(
|
|
182
|
+
const result = await this.readPlan(join(realTerragruntDir, moduleId), composedArgs);
|
|
165
183
|
if ('plan' in result) {
|
|
166
184
|
plans.set(moduleId, result.plan);
|
|
167
185
|
}
|
|
@@ -180,30 +198,50 @@ export class TerraformUtility {
|
|
|
180
198
|
return this;
|
|
181
199
|
}
|
|
182
200
|
/**
|
|
183
|
-
* Runs `terragrunt run
|
|
201
|
+
* Runs `terragrunt run --all -- validate` over every generated module folder, checking the generated
|
|
184
202
|
* HCL is well-formed. Unrelated to {@link Octo.validate}, which compares plans against intent.
|
|
185
203
|
*/
|
|
186
204
|
async validate(terragruntDir) {
|
|
187
205
|
return this.runAll(terragruntDir, 'validate', this.consumeArgs());
|
|
188
206
|
}
|
|
189
207
|
/**
|
|
190
|
-
*
|
|
191
|
-
*
|
|
208
|
+
* Runs `file` with `args`, handing each chunk it writes to `onChunk` as it arrives. Keeps its whole
|
|
209
|
+
* stdout only when `keepStdout` asks for it, and the last {@link STDERR_TAIL_LENGTH} characters of its
|
|
210
|
+
* stderr, so a process writing for an hour holds no more memory than one writing for a second.
|
|
192
211
|
*/
|
|
193
|
-
|
|
212
|
+
spawnAsync(file, args, options, onChunk) {
|
|
194
213
|
return new Promise((resolve, reject) => {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
214
|
+
let stderr = '';
|
|
215
|
+
let stdout = '';
|
|
216
|
+
const child = spawn(file, args, {
|
|
217
|
+
cwd: options.cwd,
|
|
218
|
+
env: options.env,
|
|
219
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
220
|
+
timeout: options.timeout,
|
|
221
|
+
});
|
|
222
|
+
// Decode as text, so a character split across two chunks arrives whole.
|
|
223
|
+
child.stdout.setEncoding('utf8');
|
|
224
|
+
child.stderr.setEncoding('utf8');
|
|
225
|
+
child.stdout.on('data', (chunk) => {
|
|
226
|
+
if (options.keepStdout) {
|
|
227
|
+
stdout += chunk;
|
|
228
|
+
}
|
|
229
|
+
onChunk(chunk, 'stdout');
|
|
230
|
+
});
|
|
231
|
+
child.stderr.on('data', (chunk) => {
|
|
232
|
+
stderr = (stderr + chunk).slice(-STDERR_TAIL_LENGTH);
|
|
233
|
+
onChunk(chunk, 'stderr');
|
|
234
|
+
});
|
|
235
|
+
child.on('error', (error) => reject(Object.assign(error, { stderr, stdout })));
|
|
236
|
+
child.on('close', (code, signal) => {
|
|
237
|
+
if (code === 0) {
|
|
238
|
+
resolve({ stderr, stdout });
|
|
198
239
|
}
|
|
199
240
|
else {
|
|
200
|
-
|
|
241
|
+
const reason = signal ? `killed by ${signal}` : `exit ${code}`;
|
|
242
|
+
reject(Object.assign(new Error(`Command failed (${reason})`), { code: code ?? undefined, stderr, stdout }));
|
|
201
243
|
}
|
|
202
244
|
});
|
|
203
|
-
if (onOutput) {
|
|
204
|
-
child.stdout?.on('data', (chunk) => onOutput(String(chunk), 'stdout'));
|
|
205
|
-
child.stderr?.on('data', (chunk) => onOutput(String(chunk), 'stderr'));
|
|
206
|
-
}
|
|
207
245
|
});
|
|
208
246
|
}
|
|
209
247
|
/**
|
|
@@ -212,6 +250,9 @@ export class TerraformUtility {
|
|
|
212
250
|
buildEnv() {
|
|
213
251
|
const env = { ...process.env };
|
|
214
252
|
env.TG_PROVIDER_CACHE ??= '1'; // Enable Terragrunt shared provider cache by default.
|
|
253
|
+
// Lay out Terragrunt's log lines without a time of their own.
|
|
254
|
+
delete env.TG_LOG_FORMAT;
|
|
255
|
+
env.TG_LOG_CUSTOM_FORMAT = TERRAGRUNT_LOG_FORMAT;
|
|
215
256
|
// Resolves the paths a generated folder names relative to the project root. Terragrunt runs
|
|
216
257
|
// terraform from a copy of the folder, so terraform cannot work the root out for itself.
|
|
217
258
|
env[`TF_VAR_${PROJECT_ROOT_VARIABLE_NAME}`] ??= process.cwd();
|
|
@@ -273,8 +314,7 @@ export class TerraformUtility {
|
|
|
273
314
|
/**
|
|
274
315
|
* The `terragrunt run --all` invocation itself, wrapped in its started/finished pair.
|
|
275
316
|
*/
|
|
276
|
-
async invokeRunAll(terragruntDir, command, commandArgs
|
|
277
|
-
const binary = this.options.terragruntBinary;
|
|
317
|
+
async invokeRunAll(terragruntDir, command, commandArgs) {
|
|
278
318
|
const args = [
|
|
279
319
|
'--non-interactive',
|
|
280
320
|
'--no-color',
|
|
@@ -289,29 +329,103 @@ export class TerraformUtility {
|
|
|
289
329
|
const eventService = EventService.getInstance();
|
|
290
330
|
const startedAt = Date.now();
|
|
291
331
|
eventService.emit(new TerraformCommandStartedEvent(command, { command, dir: terragruntDir }));
|
|
332
|
+
let exitCode = 0;
|
|
292
333
|
try {
|
|
293
|
-
|
|
294
|
-
env: this.buildEnv(),
|
|
295
|
-
maxBuffer: MAX_BUFFER,
|
|
296
|
-
timeout: MUTATING_COMMANDS.has(command) ? this.requestedTimeoutInMs : this.options.timeoutInMs,
|
|
297
|
-
}, onOutput);
|
|
298
|
-
eventService.emit(new TerraformCommandFinishedEvent(command, {
|
|
334
|
+
await this.runProcess(this.options.terragruntBinary, args, {
|
|
299
335
|
command,
|
|
300
336
|
dir: terragruntDir,
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
}
|
|
304
|
-
return { args, exitCode: 0, stderr, stdout };
|
|
337
|
+
timeout: MUTATING_COMMANDS.has(command) ? this.requestedTimeoutInMs : this.options.timeoutInMs,
|
|
338
|
+
});
|
|
339
|
+
return { args, exitCode };
|
|
305
340
|
}
|
|
306
341
|
catch (error) {
|
|
307
|
-
|
|
342
|
+
exitCode = error.exitCode ?? -1;
|
|
343
|
+
throw error;
|
|
344
|
+
}
|
|
345
|
+
finally {
|
|
308
346
|
eventService.emit(new TerraformCommandFinishedEvent(command, {
|
|
309
347
|
command,
|
|
310
348
|
dir: terragruntDir,
|
|
311
349
|
durationInMs: Date.now() - startedAt,
|
|
312
|
-
exitCode
|
|
350
|
+
exitCode,
|
|
313
351
|
}));
|
|
314
|
-
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Moves the terraform state of every move the last generate recorded out of its old module folder
|
|
356
|
+
* into its new one, with `terraform state mv`, and copies the moved resources' outputs along, since
|
|
357
|
+
* folders depending on the new one read them there. An address the old folder's state does not hold,
|
|
358
|
+
* or the new one's already holds, is skipped, which is what a move already made leaves behind.
|
|
359
|
+
* Records in `originalStates` what each state file held before its first move, `undefined` where none
|
|
360
|
+
* existed.
|
|
361
|
+
*/
|
|
362
|
+
async moveStates(terragruntDir, moduleIds, originalStates) {
|
|
363
|
+
const terraformStateService = await Container.getInstance().get(TerraformStateService);
|
|
364
|
+
const moves = await terraformStateService.getRecordedMoves();
|
|
365
|
+
const readAddresses = async (stateFilePath) => {
|
|
366
|
+
try {
|
|
367
|
+
const state = JSON.parse(await readFile(stateFilePath, 'utf-8'));
|
|
368
|
+
return new Set((state.resources ?? []).filter((r) => r.mode === 'managed').map((r) => `${r.type}.${r.name}`));
|
|
369
|
+
}
|
|
370
|
+
catch {
|
|
371
|
+
return new Set();
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
let tempDir;
|
|
375
|
+
try {
|
|
376
|
+
for (const { addresses, fromModuleId, moduleId, outputs } of moves) {
|
|
377
|
+
if (!moduleIds.includes(fromModuleId) || !moduleIds.includes(moduleId)) {
|
|
378
|
+
continue;
|
|
379
|
+
}
|
|
380
|
+
// Find the addresses still to move.
|
|
381
|
+
const fromStateFilePath = resolve(terragruntDir, fromModuleId, TERRAFORM_STATE_FILE_NAME);
|
|
382
|
+
const toStateFilePath = resolve(terragruntDir, moduleId, TERRAFORM_STATE_FILE_NAME);
|
|
383
|
+
const [fromAddresses, toAddresses] = await Promise.all([
|
|
384
|
+
readAddresses(fromStateFilePath),
|
|
385
|
+
readAddresses(toStateFilePath),
|
|
386
|
+
]);
|
|
387
|
+
const movableAddresses = addresses.filter(({ from, to }) => fromAddresses.has(from) && !toAddresses.has(to));
|
|
388
|
+
if (movableAddresses.length === 0) {
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
// Keep what both state files held before their first move.
|
|
392
|
+
for (const stateFilePath of [fromStateFilePath, toStateFilePath]) {
|
|
393
|
+
if (!originalStates.has(stateFilePath)) {
|
|
394
|
+
originalStates.set(stateFilePath, existsSync(stateFilePath) ? await readFile(stateFilePath) : undefined);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
// Move each address, writing terraform's backups outside the module folders.
|
|
398
|
+
tempDir ??= await mkdtemp(join(tmpdir(), 'octo-tfstate-'));
|
|
399
|
+
for (const { from, to } of movableAddresses) {
|
|
400
|
+
await this.runIn(tempDir, this.options.terraformBinary ?? 'terraform', [
|
|
401
|
+
'state',
|
|
402
|
+
'mv',
|
|
403
|
+
'-lock=false',
|
|
404
|
+
`-state=${fromStateFilePath}`,
|
|
405
|
+
`-state-out=${toStateFilePath}`,
|
|
406
|
+
`-backup=${join(tempDir, `${fromModuleId}-${from}.backup`)}`,
|
|
407
|
+
`-backup-out=${join(tempDir, `${moduleId}-${to}.backup`)}`,
|
|
408
|
+
from,
|
|
409
|
+
to,
|
|
410
|
+
]);
|
|
411
|
+
}
|
|
412
|
+
// Copy the outputs the moved resources published.
|
|
413
|
+
const fromState = JSON.parse(await readFile(fromStateFilePath, 'utf-8'));
|
|
414
|
+
const toState = JSON.parse(await readFile(toStateFilePath, 'utf-8'));
|
|
415
|
+
toState.outputs ??= {};
|
|
416
|
+
for (const { from, to } of outputs) {
|
|
417
|
+
if (fromState.outputs?.[from] !== undefined && toState.outputs[to] === undefined) {
|
|
418
|
+
toState.outputs[to] = fromState.outputs[from];
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
toState.serial++;
|
|
422
|
+
await writeFile(toStateFilePath, JSON.stringify(toState, null, 2));
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
finally {
|
|
426
|
+
if (tempDir) {
|
|
427
|
+
await rm(tempDir, { force: true, recursive: true });
|
|
428
|
+
}
|
|
315
429
|
}
|
|
316
430
|
}
|
|
317
431
|
/**
|
|
@@ -355,29 +469,80 @@ export class TerraformUtility {
|
|
|
355
469
|
}
|
|
356
470
|
}
|
|
357
471
|
/**
|
|
358
|
-
*
|
|
472
|
+
* The directory with every symbolic link on its path resolved, or the directory as given when it does
|
|
473
|
+
* not exist. Terragrunt drops `dependency` blocks when its working directory is reached through a
|
|
474
|
+
* symbolic link, as macOS's temporary directory is.
|
|
359
475
|
*/
|
|
360
|
-
async
|
|
361
|
-
const binary = this.options.terragruntBinary;
|
|
476
|
+
async resolveRealPath(dir) {
|
|
362
477
|
try {
|
|
363
|
-
|
|
364
|
-
cwd: moduleDir,
|
|
365
|
-
env: this.buildEnv(),
|
|
366
|
-
maxBuffer: MAX_BUFFER,
|
|
367
|
-
timeout: this.options.timeoutInMs,
|
|
368
|
-
});
|
|
369
|
-
return { args, exitCode: 0, stderr, stdout };
|
|
478
|
+
return await realpath(dir);
|
|
370
479
|
}
|
|
371
480
|
catch (error) {
|
|
372
|
-
|
|
481
|
+
if (error.code === 'ENOENT') {
|
|
482
|
+
return dir;
|
|
483
|
+
}
|
|
484
|
+
throw error;
|
|
373
485
|
}
|
|
374
486
|
}
|
|
487
|
+
/**
|
|
488
|
+
* Writes back what each state file held before {@link TerraformUtility.moveStates}, deleting one that
|
|
489
|
+
* did not exist.
|
|
490
|
+
*/
|
|
491
|
+
async restoreStates(originalStates) {
|
|
492
|
+
for (const [stateFilePath, data] of originalStates.entries()) {
|
|
493
|
+
if (data === undefined) {
|
|
494
|
+
await rm(stateFilePath, { force: true });
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
await writeFile(stateFilePath, data);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Runs one terragrunt command in a single module folder (`cwd` = that folder).
|
|
503
|
+
*/
|
|
504
|
+
async run(moduleDir, args) {
|
|
505
|
+
return this.runIn(moduleDir, this.options.terragruntBinary, args);
|
|
506
|
+
}
|
|
375
507
|
/**
|
|
376
508
|
* Runs `terragrunt run --all -- <command>` across every module folder under `terragruntDir`, with
|
|
377
509
|
* the terraform state of every folder checked out around it.
|
|
378
510
|
*/
|
|
379
|
-
async runAll(terragruntDir, command, commandArgs
|
|
380
|
-
|
|
511
|
+
async runAll(terragruntDir, command, commandArgs) {
|
|
512
|
+
const realTerragruntDir = await this.resolveRealPath(terragruntDir);
|
|
513
|
+
return this.withTerraformState(realTerragruntDir, () => this.invokeRunAll(realTerragruntDir, command, commandArgs), { keepMoves: MUTATING_COMMANDS.has(command) });
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Runs `binary` with `args` in `dir`. Its stdout is returned only when it is asked for JSON, which is
|
|
517
|
+
* the output octo reads; every other process's output goes out only as events.
|
|
518
|
+
*/
|
|
519
|
+
async runIn(dir, binary, args) {
|
|
520
|
+
return this.runProcess(binary, args, { command: args[0], cwd: dir, dir, timeout: this.options.timeoutInMs });
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Runs one process. Every terraform and terragrunt process octo starts goes through here, and goes out
|
|
524
|
+
* as events: a {@link TerraformProcessStartedEvent}, a {@link TerraformProcessOutputEvent} for each
|
|
525
|
+
* chunk it writes, and a {@link TerraformProcessExitedEvent}, all named after `command`.
|
|
526
|
+
*
|
|
527
|
+
* @throws {@link TerraformCommandError} When the process cannot start or exits non-zero.
|
|
528
|
+
*/
|
|
529
|
+
async runProcess(binary, args, { command, cwd, dir, timeout }) {
|
|
530
|
+
const eventService = EventService.getInstance();
|
|
531
|
+
const processId = ++TerraformUtility.lastProcessId;
|
|
532
|
+
eventService.emit(new TerraformProcessStartedEvent(command, { args, binary, dir, processId }));
|
|
533
|
+
let exitCode = 0;
|
|
534
|
+
try {
|
|
535
|
+
const { stdout } = await this.spawnAsync(binary, args, { cwd, env: this.buildEnv(), keepStdout: args.includes('-json'), timeout }, (text, stream) => eventService.emit(new TerraformProcessOutputEvent(command, { processId, stream, text })));
|
|
536
|
+
return { stdout };
|
|
537
|
+
}
|
|
538
|
+
catch (error) {
|
|
539
|
+
const commandError = this.toTerraformCommandError(binary, args, dir, error);
|
|
540
|
+
exitCode = commandError.exitCode;
|
|
541
|
+
throw commandError;
|
|
542
|
+
}
|
|
543
|
+
finally {
|
|
544
|
+
eventService.emit(new TerraformProcessExitedEvent(command, { exitCode, processId }));
|
|
545
|
+
}
|
|
381
546
|
}
|
|
382
547
|
/**
|
|
383
548
|
* Wraps whatever a failed spawn threw into a {@link TerraformCommandError}.
|
|
@@ -389,25 +554,49 @@ export class TerraformUtility {
|
|
|
389
554
|
return new TerraformCommandError(message, args, exitCode, e.stdout ?? '', e.stderr ?? '');
|
|
390
555
|
}
|
|
391
556
|
/**
|
|
392
|
-
* Checks every module folder's terraform state out of Octo's state provider,
|
|
393
|
-
* checks
|
|
557
|
+
* Checks every module folder's terraform state out of Octo's state provider, moves the state of every
|
|
558
|
+
* resource generate moved between folders, runs `body`, and checks the state back in.
|
|
559
|
+
*
|
|
560
|
+
* Only a command that changes infrastructure (`keepMoves`) checks the moves in. Any other runs on them
|
|
561
|
+
* and puts back what the state files held before, so a move nobody applied never reaches the provider.
|
|
394
562
|
*
|
|
395
563
|
* The check-in runs on the way out of a failure as much as a success, because what terraform has
|
|
396
564
|
* already built is real whether or not the command that built it returned cleanly. A timer checks
|
|
397
565
|
* in through the command as well, bounding what a killed runner loses.
|
|
566
|
+
*
|
|
567
|
+
* A failed command keeps its own error when the check-in after it fails too; the check-in's error
|
|
568
|
+
* is printed on stderr. The folder's state is ahead of the provider's then, and the next run keeps
|
|
569
|
+
* it and checks it in.
|
|
398
570
|
*/
|
|
399
|
-
async withTerraformState(terragruntDir, body) {
|
|
571
|
+
async withTerraformState(terragruntDir, body, { keepMoves = false } = {}) {
|
|
400
572
|
const terraformStateService = await Container.getInstance().get(TerraformStateService);
|
|
401
573
|
const moduleIds = await this.listModuleFolders(terragruntDir);
|
|
574
|
+
const originalStates = new Map();
|
|
402
575
|
await terraformStateService.checkOut(terragruntDir, moduleIds);
|
|
403
|
-
|
|
404
|
-
try {
|
|
405
|
-
return await body(moduleIds);
|
|
406
|
-
}
|
|
407
|
-
finally {
|
|
576
|
+
const checkIn = async () => {
|
|
408
577
|
terraformStateService.stopPeriodicCheckIn();
|
|
578
|
+
if (!keepMoves) {
|
|
579
|
+
await this.restoreStates(originalStates);
|
|
580
|
+
}
|
|
409
581
|
await terraformStateService.checkIn(terragruntDir, moduleIds);
|
|
582
|
+
};
|
|
583
|
+
let result;
|
|
584
|
+
try {
|
|
585
|
+
await this.moveStates(terragruntDir, moduleIds, originalStates);
|
|
586
|
+
if (keepMoves || originalStates.size === 0) {
|
|
587
|
+
terraformStateService.startPeriodicCheckIn(terragruntDir, moduleIds, this.options.stateCheckInIntervalInMs);
|
|
588
|
+
}
|
|
589
|
+
result = await body(moduleIds);
|
|
590
|
+
}
|
|
591
|
+
catch (error) {
|
|
592
|
+
// Keep the error of the command, which is the one the user has to act on.
|
|
593
|
+
await checkIn().catch((checkInError) => {
|
|
594
|
+
process.stderr.write(`Failed to check terraform state in: ${checkInError?.message ?? String(checkInError)}\n`);
|
|
595
|
+
});
|
|
596
|
+
throw error;
|
|
410
597
|
}
|
|
598
|
+
await checkIn();
|
|
599
|
+
return result;
|
|
411
600
|
}
|
|
412
601
|
}
|
|
413
602
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terraform.utility.js","sourceRoot":"","sources":["../../../src/utilities/terraform/terraform.utility.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"terraform.utility.js","sourceRoot":"","sources":["../../../src/utilities/terraform/terraform.utility.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAe,UAAU,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4DAA4D,CAAC;AACnG,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAExF,MAAM,qCAAqC,GAAG,EAAE,GAAG,IAAI,CAAC;AACxD,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,cAAc;AAC5D,MAAM,qBAAqB;AACzB,oDAAoD;AACpD,wHAAwH,CAAC;AAC3H,MAAM,yBAAyB,GAAG,mBAAmB,CAAC;AAEtD;;;GAGG;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAExD;;;GAGG;AACH,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAC;AAmBrC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,OAAO,gBAAgB;IAC3B;;OAEG;aACY,kBAAa,GAAG,CAAC,CAAC;IAiBjC;;;;;;;;;;;;OAYG;IACH,YACE,UAKI,EAAE;QAEN,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;QAChD,IAAI,CAAC,OAAO,GAAG;YACb,wBAAwB,EAAE,OAAO,CAAC,wBAAwB,IAAI,qCAAqC;YACnG,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,YAAY;YAC1D,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,qBAAqB;SAC1D,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CAAC,aAAqB;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,aAAqB;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACzG,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAiC;QACnD,MAAM,QAAQ,GAAiE,EAAE,CAAC;QAElF,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;gBACzD,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;gBACvD,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,aAAqB;QAC3C,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yFAAyF;YACzF,0BAA0B;YAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,SAAS;YACX,CAAC;YACD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAcD;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,aAAqB,EACrB,UAA8B,EAAE;QAEhC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CACpE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA4B,CAAC;YACpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC9F,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;oBAChC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAeD;;OAEG;IACH,KAAK,CAAC,IAAI,CACR,aAAqB,EACrB,UAA8B,EAAE;QAEhC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CACpE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;YAE/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC;gBACpF,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;oBACrB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,IAAc;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD;;;OAGG;IACH,KAAK,CAAC,QAAQ,CAAC,aAAqB;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IACD;;;;OAIG;IACO,UAAU,CAClB,IAAY,EACZ,IAAc,EACd,OAAwF,EACxF,OAA4D;QAE5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;gBAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBACjC,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;YAEH,wEAAwE;YACxE,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACxC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC;gBAClB,CAAC;gBACD,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACxC,MAAM,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBACrD,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBACjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;oBAC/D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,MAAM,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC9G,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,QAAQ;QACd,MAAM,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,GAAG,CAAC,iBAAiB,KAAK,GAAG,CAAC,CAAC,sDAAsD;QACrF,8DAA8D;QAC9D,OAAO,GAAG,CAAC,aAAa,CAAC;QACzB,GAAG,CAAC,oBAAoB,GAAG,qBAAqB,CAAC;QACjD,4FAA4F;QAC5F,yFAAyF;QACzF,GAAG,CAAC,UAAU,0BAA0B,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9D,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YACjC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAChD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB,CAAC,KAAc;QACxC,MAAM,CAAC,GAAG,KAA8C,CAAC;QACzD,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,UAAU,CAAI,OAAe,EAAE,aAAqB,EAAE,IAAsB;QACxF,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,YAAY,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAE9F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CACf,IAAI,6BAA6B,CAAC,OAAO,EAAE;gBACzC,OAAO;gBACP,GAAG,EAAE,aAAa;gBAClB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACpC,QAAQ,EAAE,CAAC;aACZ,CAAC,CACH,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CACf,IAAI,6BAA6B,CAAC,OAAO,EAAE;gBACzC,OAAO;gBACP,GAAG,EAAE,aAAa;gBAClB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACpC,QAAQ,EAAG,KAA+B,EAAE,QAAQ,IAAI,CAAC,CAAC;aAC3D,CAAC,CACH,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CACxB,aAAqB,EACrB,OAAe,EACf,WAAqB;QAErB,MAAM,IAAI,GAAG;YACX,mBAAmB;YACnB,YAAY;YACZ,eAAe;YACf,aAAa;YACb,KAAK;YACL,OAAO;YACP,IAAI;YACJ,OAAO;YACP,GAAG,WAAW;SACf,CAAC;QAEF,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,YAAY,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QAE9F,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE;gBACzD,OAAO;gBACP,GAAG,EAAE,aAAa;gBAClB,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW;aAC/F,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,GAAI,KAA+B,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YAC3D,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,IAAI,CACf,IAAI,6BAA6B,CAAC,OAAO,EAAE;gBACzC,OAAO;gBACP,GAAG,EAAE,aAAa;gBAClB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBACpC,QAAQ;aACT,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,UAAU,CACtB,aAAqB,EACrB,SAAmB,EACnB,cAA+C;QAE/C,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACvF,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,gBAAgB,EAAE,CAAC;QAE7D,MAAM,aAAa,GAAG,KAAK,EAAE,aAAqB,EAAwB,EAAE;YAC1E,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAE9D,CAAC;gBACF,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAChH,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,GAAG,EAAE,CAAC;YACnB,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,OAA2B,CAAC;QAChC,IAAI,CAAC;YACH,KAAK,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,KAAK,EAAE,CAAC;gBACnE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACvE,SAAS;gBACX,CAAC;gBAED,oCAAoC;gBACpC,MAAM,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,YAAY,EAAE,yBAAyB,CAAC,CAAC;gBAC1F,MAAM,eAAe,GAAG,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,yBAAyB,CAAC,CAAC;gBACpF,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBACrD,aAAa,CAAC,iBAAiB,CAAC;oBAChC,aAAa,CAAC,eAAe,CAAC;iBAC/B,CAAC,CAAC;gBACH,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7G,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAClC,SAAS;gBACX,CAAC;gBAED,2DAA2D;gBAC3D,KAAK,MAAM,aAAa,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAAE,CAAC;oBACjE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;wBACvC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAC3G,CAAC;gBACH,CAAC;gBAED,6EAA6E;gBAC7E,OAAO,KAAK,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;gBAC3D,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,gBAAgB,EAAE,CAAC;oBAC5C,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,WAAW,EAAE;wBACrE,OAAO;wBACP,IAAI;wBACJ,aAAa;wBACb,UAAU,iBAAiB,EAAE;wBAC7B,cAAc,eAAe,EAAE;wBAC/B,WAAW,IAAI,CAAC,OAAO,EAAE,GAAG,YAAY,IAAI,IAAI,SAAS,CAAC,EAAE;wBAC5D,eAAe,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,IAAI,EAAE,SAAS,CAAC,EAAE;wBAC1D,IAAI;wBACJ,EAAE;qBACH,CAAC,CAAC;gBACL,CAAC;gBAED,kDAAkD;gBAClD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAEtE,CAAC;gBACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAGlE,CAAC;gBACF,OAAO,CAAC,OAAO,KAAK,EAAE,CAAC;gBACvB,KAAK,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC;oBACnC,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;wBACjF,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,YAAsB;QACjE,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;YACnF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAqB,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,QAAQ,CACpB,SAAiB,EACjB,YAAsB;QAEtB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,QAAQ,EAAE,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;YACzF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1E,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAkB,EAAE,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,eAAe,CAAC,GAAW;QACvC,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,GAAG,CAAC;YACb,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,aAAa,CAAC,cAA+C;QACzE,KAAK,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;YAC7D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,EAAE,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,GAAG,CAAC,SAAiB,EAAE,IAAc;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,MAAM,CAAC,aAAqB,EAAE,OAAe,EAAE,WAAqB;QAChF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,kBAAkB,CAC5B,iBAAiB,EACjB,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,EAAE,WAAW,CAAC,EAChE,EAAE,SAAS,EAAE,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAC9C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,MAAc,EAAE,IAAc;QAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/G,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,UAAU,CACtB,MAAc,EACd,IAAc,EACd,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAoE;QAEhG,MAAM,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,EAAE,gBAAgB,CAAC,aAAa,CAAC;QACnD,YAAY,CAAC,IAAI,CAAC,IAAI,4BAA4B,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAE/F,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CACtC,MAAM,EACN,IAAI,EACJ,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAC1E,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAC3G,CAAC;YACF,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5E,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;YACjC,MAAM,YAAY,CAAC;QACrB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,MAAc,EAAE,IAAc,EAAE,GAAW,EAAE,KAAc;QACzF,MAAM,CAAC,GAAG,KAAuF,CAAC;QAClG,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,kBAAkB,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,QAAQ,MACvF,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CACvC,EAAE,CAAC;QACH,OAAO,IAAI,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACK,KAAK,CAAC,kBAAkB,CAC9B,aAAqB,EACrB,IAAyC,EACzC,EAAE,SAAS,GAAG,KAAK,KAA8B,EAAE;QAEnD,MAAM,qBAAqB,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACvF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAC9D,MAAM,cAAc,GAAG,IAAI,GAAG,EAA8B,CAAC;QAE7D,MAAM,qBAAqB,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAE/D,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;YACxC,qBAAqB,CAAC,mBAAmB,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,qBAAqB,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAChE,CAAC,CAAC;QAEF,IAAI,MAAS,CAAC;QACd,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAChE,IAAI,SAAS,IAAI,cAAc,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC3C,qBAAqB,CAAC,oBAAoB,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YAC9G,CAAC;YAED,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0EAA0E;YAC1E,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,EAAE;gBACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,YAAY,EAAE,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjH,CAAC,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC;IAChB,CAAC;;AAGH;;GAEG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAGlC;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,UAA6D,EAAE,EAC/D,WAAoB,KAAK;QAEzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF,CAAA;AApBY,uBAAuB;IADnC,OAAO,CAAmB,gBAAgB,CAAC;GAC/B,uBAAuB,CAoBnC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { NodeType, type UnknownAnchor, type UnknownModel, type UnknownResource } from '../../app.type.js';
|
|
2
2
|
import type { Diff } from '../../functions/diff/diff.js';
|
|
3
|
+
import { ANodeAction } from '../../functions/node/node-action.abstract.js';
|
|
3
4
|
import { AModel } from '../../models/model.abstract.js';
|
|
4
5
|
import { AAnchor } from '../../overlays/anchor.abstract.js';
|
|
5
6
|
import type { BaseAnchorSchema } from '../../overlays/anchor.schema.js';
|
|
6
7
|
import { AOverlay } from '../../overlays/overlay.abstract.js';
|
|
7
8
|
import type { BaseOverlaySchema } from '../../overlays/overlay.schema.js';
|
|
9
|
+
import type { IResourceAction } from '../../resources/resource-action.interface.js';
|
|
8
10
|
import { AResource } from '../../resources/resource.abstract.js';
|
|
9
11
|
import type { BaseResourceSchema } from '../../resources/resource.schema.js';
|
|
10
12
|
/**
|
|
@@ -12,6 +14,23 @@ import type { BaseResourceSchema } from '../../resources/resource.schema.js';
|
|
|
12
14
|
*/
|
|
13
15
|
export declare class TestAction {
|
|
14
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* A resource action handling every diff with `handle`.
|
|
19
|
+
*
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export declare class TestResourceAction extends ANodeAction implements IResourceAction<UnknownResource> {
|
|
23
|
+
readonly handle: IResourceAction<UnknownResource>['handle'];
|
|
24
|
+
readonly actionTimeoutInMs?: number | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
constructor(handle?: IResourceAction<UnknownResource>['handle'], actionTimeoutInMs?: number | undefined);
|
|
29
|
+
/**
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
filter(): boolean;
|
|
33
|
+
}
|
|
15
34
|
/**
|
|
16
35
|
* @internal
|
|
17
36
|
*/
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { NodeType } from '../../app.type.js';
|
|
2
|
+
import { ANodeAction } from '../../functions/node/node-action.abstract.js';
|
|
2
3
|
import { AModel } from '../../models/model.abstract.js';
|
|
3
4
|
import { AAnchor } from '../../overlays/anchor.abstract.js';
|
|
4
5
|
import { AOverlay } from '../../overlays/overlay.abstract.js';
|
|
@@ -8,6 +9,27 @@ import { AResource } from '../../resources/resource.abstract.js';
|
|
|
8
9
|
*/
|
|
9
10
|
export class TestAction {
|
|
10
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* A resource action handling every diff with `handle`.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export class TestResourceAction extends ANodeAction {
|
|
18
|
+
/**
|
|
19
|
+
* @internal
|
|
20
|
+
*/
|
|
21
|
+
constructor(handle = async () => { }, actionTimeoutInMs) {
|
|
22
|
+
super();
|
|
23
|
+
this.handle = handle;
|
|
24
|
+
this.actionTimeoutInMs = actionTimeoutInMs;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
filter() {
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
11
33
|
/**
|
|
12
34
|
* @internal
|
|
13
35
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-classes.js","sourceRoot":"","sources":["../../../src/utilities/test-helpers/test-classes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA+D,MAAM,mBAAmB,CAAC;AAE1G,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"test-classes.js","sourceRoot":"","sources":["../../../src/utilities/test-helpers/test-classes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA+D,MAAM,mBAAmB,CAAC;AAE1G,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAG9D,OAAO,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAGjE;;GAEG;AACH,MAAM,OAAO,UAAU;CAAG;AAE1B;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAAW;IACjD;;OAEG;IACH,YACW,SAAqD,KAAK,IAAmB,EAAE,GAAE,CAAC,EAClF,iBAA0B;QAEnC,KAAK,EAAE,CAAC;QAHC,WAAM,GAAN,MAAM,CAA4E;QAClF,sBAAiB,GAAjB,iBAAiB,CAAS;IAGrC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,OAAuC;aAC5C,iBAAY,GAAW,OAAO,CAAC;IAExD;;OAEG;IACH,YAAY,QAAgB,EAAE,UAA0C,EAAE,MAAoB;QAC5F,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;;AAGH;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,MAAuC;aACzD,cAAS,GAAW,YAAY,CAAC;aACjC,iBAAY,GAAW,OAAO,CAAC;aAC/B,gBAAW,GAAG,EAAE,CAAC;aACjB,cAAS,GAAa,QAAQ,CAAC,KAAK,CAAC;IAE9D;;OAEG;IACM,KAAK,CAAC,cAAc;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACM,UAAU;QACjB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;OAEG;IACM,KAAK;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;;AAGH;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,QAAwC;aAC9C,cAAS,GAAW,cAAc,CAAC;aACnC,iBAAY,GAAW,OAAO,CAAC;aAC/B,gBAAW,GAAG,EAAE,CAAC;aACjB,cAAS,GAAa,QAAQ,CAAC,OAAO,CAAC;IAEhE;;OAEG;IACH,YACE,SAAyC,EACzC,UAA2C,EAC3C,OAAwB;QAExB,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;;AAGH;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,SAA2C;aAClD,cAAS,GAAW,eAAe,CAAC;aACpC,iBAAY,GAAW,OAAO,CAAC;aAC/B,gBAAW,GAAG,EAAE,CAAC;aACjB,cAAS,GAAa,QAAQ,CAAC,QAAQ,CAAC;IAEjE;;OAEG;IACH,YAAY,UAAkB,EAAE,aAA+C,EAAE,EAAE,UAA6B,EAAE;QAChH,KAAK,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC"}
|
|
@@ -15,6 +15,13 @@ import { Subnet } from '../../models/subnet/subnet.model.js';
|
|
|
15
15
|
* @internal
|
|
16
16
|
*/
|
|
17
17
|
export declare function commit<T extends UnknownModel>(model: T): Promise<T>;
|
|
18
|
+
/**
|
|
19
|
+
* Attributes models to a module, as though the module had produced them. A module produces one model
|
|
20
|
+
* of each kind.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare function attributeToModule(models: UnknownModel[], moduleId?: string): Promise<void>;
|
|
18
25
|
/**
|
|
19
26
|
* @internal
|
|
20
27
|
*/
|
|
@@ -29,7 +36,7 @@ export declare function create({ account, app, deployment, environment, executio
|
|
|
29
36
|
pipeline?: (string | Pipeline)[];
|
|
30
37
|
region?: (string | Region)[];
|
|
31
38
|
server?: (string | Server)[];
|
|
32
|
-
service?: ([string, Record<string, unknown
|
|
39
|
+
service?: ([string, Record<string, unknown>?, UnknownModel[]?] | Service)[];
|
|
33
40
|
subnet?: (string | Subnet)[];
|
|
34
41
|
}): {
|
|
35
42
|
account: Account[];
|