@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
|
@@ -1,84 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createReadStream
|
|
3
|
-
import { mkdir
|
|
4
|
-
import { Readable } from 'node:stream';
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { createReadStream } from 'node:fs';
|
|
3
|
+
import { mkdir } from 'node:fs/promises';
|
|
5
4
|
import { pipeline } from 'node:stream/promises';
|
|
6
|
-
const ALGORITHM = 'aes-256-gcm';
|
|
7
|
-
const IV_LENGTH = 12;
|
|
8
|
-
const TAG_LENGTH = 16;
|
|
9
5
|
/**
|
|
10
6
|
* @internal
|
|
11
7
|
*/
|
|
12
8
|
export class FileUtility {
|
|
13
9
|
/**
|
|
10
|
+
* Creates a directory and every missing parent of it. A directory that already exists is not an error.
|
|
11
|
+
*
|
|
14
12
|
* @internal
|
|
15
13
|
*/
|
|
16
|
-
static async
|
|
17
|
-
|
|
18
|
-
const keyBuffer = createHash('sha256').update(key).digest();
|
|
19
|
-
const fileHandle = await open(inputFilePath, 'r');
|
|
20
|
-
try {
|
|
21
|
-
const { size } = await fileHandle.stat();
|
|
22
|
-
// Extract IV (first IV_LENGTH bytes) and Tag (last TAG_LENGTH bytes).
|
|
23
|
-
const iv = Buffer.alloc(IV_LENGTH);
|
|
24
|
-
const tag = Buffer.alloc(TAG_LENGTH);
|
|
25
|
-
await fileHandle.read(iv, 0, IV_LENGTH, 0);
|
|
26
|
-
await fileHandle.read(tag, 0, TAG_LENGTH, size - TAG_LENGTH);
|
|
27
|
-
// Setup Decipher.
|
|
28
|
-
const decipher = createDecipheriv(ALGORITHM, keyBuffer, iv);
|
|
29
|
-
decipher.setAuthTag(tag);
|
|
30
|
-
// Create ReadStream for the encrypted chunk in the middle.
|
|
31
|
-
// 'end' is inclusive, so we subtract 1 from the start of the tag.
|
|
32
|
-
const readStream = createReadStream(inputFilePath, {
|
|
33
|
-
autoClose: false, // The handle is closed manually in 'finally'.
|
|
34
|
-
end: size - TAG_LENGTH - 1,
|
|
35
|
-
fd: fileHandle.fd,
|
|
36
|
-
start: IV_LENGTH,
|
|
37
|
-
});
|
|
38
|
-
// Decrypt and collect chunks.
|
|
39
|
-
const chunks = [];
|
|
40
|
-
for await (const chunk of readStream.pipe(decipher)) {
|
|
41
|
-
chunks.push(chunk);
|
|
42
|
-
}
|
|
43
|
-
return Buffer.concat(chunks);
|
|
44
|
-
}
|
|
45
|
-
finally {
|
|
46
|
-
await fileHandle.close();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* @internal
|
|
51
|
-
*/
|
|
52
|
-
static async encryptBufferToFile(data, outputFilePath, key) {
|
|
53
|
-
// sha256 always produces a 32 byte key.
|
|
54
|
-
const keyBuffer = createHash('sha256').update(key).digest();
|
|
55
|
-
const iv = createHash('md5').update(data).digest().subarray(0, IV_LENGTH);
|
|
56
|
-
const cipher = createCipheriv(ALGORITHM, keyBuffer, iv);
|
|
57
|
-
const readStream = Readable.from(data);
|
|
58
|
-
const writeStream = createWriteStream(outputFilePath);
|
|
59
|
-
// Write the IV to the start.
|
|
60
|
-
writeStream.write(iv);
|
|
61
|
-
// Stream the encrypted data.
|
|
62
|
-
await pipeline(readStream, cipher, writeStream);
|
|
63
|
-
// Append the Auth Tag to the very end.
|
|
64
|
-
const tag = cipher.getAuthTag();
|
|
65
|
-
const tagAppendStream = createWriteStream(outputFilePath, { flags: 'a' });
|
|
66
|
-
// Final write with Tag.
|
|
67
|
-
await new Promise((resolve, reject) => {
|
|
68
|
-
tagAppendStream.write(tag, (error) => {
|
|
69
|
-
if (error)
|
|
70
|
-
reject(error);
|
|
71
|
-
tagAppendStream.end(resolve);
|
|
72
|
-
});
|
|
73
|
-
});
|
|
14
|
+
static async ensureDirectory(directoryPath) {
|
|
15
|
+
await mkdir(directoryPath, { recursive: true });
|
|
74
16
|
}
|
|
75
17
|
/**
|
|
76
|
-
*
|
|
18
|
+
* The SHA-256 of a file's bytes, base64 encoded. The file is read as a stream, so its size is not
|
|
19
|
+
* bounded by memory.
|
|
77
20
|
*
|
|
78
21
|
* @internal
|
|
79
22
|
*/
|
|
80
|
-
static async
|
|
81
|
-
|
|
23
|
+
static async getSha256Digest(filePath) {
|
|
24
|
+
const hash = createHash('sha256');
|
|
25
|
+
await pipeline(createReadStream(filePath), hash);
|
|
26
|
+
return hash.digest('base64');
|
|
82
27
|
}
|
|
83
28
|
}
|
|
84
29
|
//# sourceMappingURL=file.utility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.utility.js","sourceRoot":"","sources":["../../../src/utilities/file/file.utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"file.utility.js","sourceRoot":"","sources":["../../../src/utilities/file/file.utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD;;GAEG;AACH,MAAM,OAAO,WAAW;IACtB;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,aAAqB;QAChD,MAAM,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,QAAgB;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -1,31 +1,66 @@
|
|
|
1
1
|
import type { TerraformService } from '../../services/terraform/terraform.service.js';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* One parsed HCL block: each attribute by name, and each nested block by its type. An attribute holding
|
|
4
|
+
* a quoted string is unquoted; any other value (a number, a list, a reference, a `jsonencode(...)` call)
|
|
5
|
+
* is kept as the HCL text it was rendered as. A nested block repeated in its parent (two `ingress`
|
|
6
|
+
* blocks) is an array.
|
|
4
7
|
*
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
* @group Utilities/Hcl
|
|
9
|
+
*/
|
|
10
|
+
export type HclBlock = {
|
|
11
|
+
[key: string]: string | HclBlock | HclBlock[];
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Reads, serializes and diffs the terraform octo renders.
|
|
15
|
+
*
|
|
16
|
+
* The render format is octo-owned and regular: `# <moduleId>/<file>` section headers, and top-level
|
|
17
|
+
* blocks that start on a line with no indent. So everything here is plain string work, needing no external
|
|
18
|
+
* HCL parser or diff library. {@link parse} reads the blocks a module test asserts on,
|
|
19
|
+
* {@link serialize} flattens a render into one string, {@link unifiedDiff} is the generic line-diff
|
|
20
|
+
* engine, and {@link diffBlocks} layers octo's block structure on top of it.
|
|
9
21
|
*
|
|
10
|
-
* @
|
|
22
|
+
* @group Utilities/Hcl
|
|
11
23
|
*/
|
|
12
24
|
export declare class HclUtility {
|
|
25
|
+
/**
|
|
26
|
+
* The `# <moduleId>/<file>` line {@link serialize} puts before each file.
|
|
27
|
+
*
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
private static readonly SECTION_HEADER;
|
|
13
31
|
/**
|
|
14
32
|
* Diffs two {@link serialize} renders at the block level. A block is identified by its header line,
|
|
15
|
-
*
|
|
33
|
+
* and blocks sharing a header (one `provider "aws"` per alias) by their first body line too, so a
|
|
34
|
+
* body change reads as `~` (a line-level {@link unifiedDiff} of what changed inside the block),
|
|
16
35
|
* not as an unrelated add + remove. An added block shows its full new body, a removed block its full
|
|
17
36
|
* old body — symmetric, with nothing trimmed away. The `+`/`-`/`~` vocabulary mirrors the
|
|
18
37
|
* `digestDiffs` digest, tagged with `moduleId/file`. Returns `'<no changes>'` when nothing moved.
|
|
19
|
-
*
|
|
20
|
-
* @internal
|
|
21
38
|
*/
|
|
22
39
|
static diffBlocks(previous: string, current: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Reads the `resource` and `data` blocks of rendered terraform, keyed by their terraform address:
|
|
42
|
+
* `<type>.<name>` for a resource, `data.<type>.<name>` for a data source. It takes one file's text or
|
|
43
|
+
* a whole {@link serialize} render, such as the `hclRender` a module test gets back, since resource
|
|
44
|
+
* and data addresses are unique across an app.
|
|
45
|
+
*
|
|
46
|
+
* It reads octo's own render format, not arbitrary HCL: one attribute or block per line, and a value
|
|
47
|
+
* spanning lines only inside brackets.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* const { resource } = HclUtility.parse(hclRender);
|
|
52
|
+
* expect(Object.keys(resource)).toContain('aws_vpc.vpc-region-475bfa');
|
|
53
|
+
* expect(resource['aws_vpc.vpc-region-475bfa'].cidr_block).toBe('10.0.0.0/16');
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
static parse(hcl: string): {
|
|
57
|
+
data: Record<string, HclBlock>;
|
|
58
|
+
resource: Record<string, HclBlock>;
|
|
59
|
+
};
|
|
23
60
|
/**
|
|
24
61
|
* Flattens the rendered terragrunt folders into one snapshot-friendly string: folders sorted by
|
|
25
62
|
* module id, files in a stable order, each prefixed with a `# <moduleId>/<file>` header. An empty
|
|
26
63
|
* file shows a `<empty>` body, so the file is still visible in the snapshot rather than omitted.
|
|
27
|
-
*
|
|
28
|
-
* @internal
|
|
29
64
|
*/
|
|
30
65
|
static serialize(moduleFiles: ReturnType<TerraformService['renderAllModules']>): string;
|
|
31
66
|
/**
|
|
@@ -36,12 +71,16 @@ export declare class HclUtility {
|
|
|
36
71
|
* is safe to embed in a snapshot.
|
|
37
72
|
*
|
|
38
73
|
* Returns an empty string when the two inputs are identical.
|
|
39
|
-
*
|
|
40
|
-
* @internal
|
|
41
74
|
*/
|
|
42
75
|
static unifiedDiff(before: string, after: string, { contextLines }?: {
|
|
43
76
|
contextLines?: number;
|
|
44
77
|
}): string;
|
|
78
|
+
/**
|
|
79
|
+
* How many brackets a line opens, less how many it closes, ignoring those inside quoted strings.
|
|
80
|
+
*
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
private static bracketDepth;
|
|
45
84
|
/**
|
|
46
85
|
* Builds the shortest edit script between two line arrays via the classic longest-common-subsequence
|
|
47
86
|
* DP. Quadratic in the number of lines, which is fine for the small blocks this serves. A removal is
|
|
@@ -51,11 +90,39 @@ export declare class HclUtility {
|
|
|
51
90
|
*/
|
|
52
91
|
private static diffLines;
|
|
53
92
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
93
|
+
* Keys blocks by their header line (e.g. `resource "aws_vpc" "vpc-x" {`), adding the first body line
|
|
94
|
+
* for a header in `repeatedHeaders`, and an occurrence number for any key still taken.
|
|
95
|
+
*
|
|
96
|
+
* @internal
|
|
97
|
+
*/
|
|
98
|
+
private static keyBlocks;
|
|
99
|
+
/**
|
|
100
|
+
* Splits a {@link serialize} render into its top-level blocks, grouped by `moduleId/file`. Relies on
|
|
101
|
+
* octo's regular render format — `# <moduleId>/<file>` section headers, and a top-level block
|
|
102
|
+
* starting on a line with no indent that is not a closing bracket.
|
|
57
103
|
*
|
|
58
104
|
* @internal
|
|
59
105
|
*/
|
|
60
106
|
private static parseBlocks;
|
|
107
|
+
/**
|
|
108
|
+
* Parses the lines inside a block. An attribute whose value opens more brackets than it closes runs
|
|
109
|
+
* on to the line that closes them, and is kept as text; `key = {` on its own is an object, parsed
|
|
110
|
+
* like a nested block.
|
|
111
|
+
*
|
|
112
|
+
* @internal
|
|
113
|
+
*/
|
|
114
|
+
private static parseBody;
|
|
115
|
+
/**
|
|
116
|
+
* Returns the header lines that more than one of these blocks starts with.
|
|
117
|
+
*
|
|
118
|
+
* @internal
|
|
119
|
+
*/
|
|
120
|
+
private static repeatedHeaders;
|
|
121
|
+
/**
|
|
122
|
+
* Splits lines into top-level blocks, each trimmed. A block starts on a line with no indent that is not a
|
|
123
|
+
* closing bracket, so a blank line inside a block does not end it.
|
|
124
|
+
*
|
|
125
|
+
* @internal
|
|
126
|
+
*/
|
|
127
|
+
private static splitTopLevelBlocks;
|
|
61
128
|
}
|
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Reads, serializes and diffs the terraform octo renders.
|
|
3
3
|
*
|
|
4
|
-
* The render format is octo-owned and regular
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* The render format is octo-owned and regular: `# <moduleId>/<file>` section headers, and top-level
|
|
5
|
+
* blocks that start on a line with no indent. So everything here is plain string work, needing no external
|
|
6
|
+
* HCL parser or diff library. {@link parse} reads the blocks a module test asserts on,
|
|
7
|
+
* {@link serialize} flattens a render into one string, {@link unifiedDiff} is the generic line-diff
|
|
8
|
+
* engine, and {@link diffBlocks} layers octo's block structure on top of it.
|
|
8
9
|
*
|
|
9
|
-
* @
|
|
10
|
+
* @group Utilities/Hcl
|
|
10
11
|
*/
|
|
11
12
|
export class HclUtility {
|
|
13
|
+
/**
|
|
14
|
+
* The `# <moduleId>/<file>` line {@link serialize} puts before each file.
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
static { this.SECTION_HEADER = /^# (.+\/.+\.(?:tf|hcl))$/; }
|
|
12
19
|
/**
|
|
13
20
|
* Diffs two {@link serialize} renders at the block level. A block is identified by its header line,
|
|
14
|
-
*
|
|
21
|
+
* and blocks sharing a header (one `provider "aws"` per alias) by their first body line too, so a
|
|
22
|
+
* body change reads as `~` (a line-level {@link unifiedDiff} of what changed inside the block),
|
|
15
23
|
* not as an unrelated add + remove. An added block shows its full new body, a removed block its full
|
|
16
24
|
* old body — symmetric, with nothing trimmed away. The `+`/`-`/`~` vocabulary mirrors the
|
|
17
25
|
* `digestDiffs` digest, tagged with `moduleId/file`. Returns `'<no changes>'` when nothing moved.
|
|
18
|
-
*
|
|
19
|
-
* @internal
|
|
20
26
|
*/
|
|
21
27
|
static diffBlocks(previous, current) {
|
|
22
28
|
const previousSections = HclUtility.parseBlocks(previous);
|
|
@@ -24,8 +30,15 @@ export class HclUtility {
|
|
|
24
30
|
const entries = [];
|
|
25
31
|
const keys = [...new Set([...previousSections.keys(), ...currentSections.keys()])].sort((a, b) => a.localeCompare(b));
|
|
26
32
|
for (const key of keys) {
|
|
27
|
-
const
|
|
28
|
-
const
|
|
33
|
+
const previousTexts = previousSections.get(key) ?? [];
|
|
34
|
+
const currentTexts = currentSections.get(key) ?? [];
|
|
35
|
+
// A header repeated on either side is keyed with its first body line on both sides.
|
|
36
|
+
const repeatedHeaders = new Set([
|
|
37
|
+
...HclUtility.repeatedHeaders(previousTexts),
|
|
38
|
+
...HclUtility.repeatedHeaders(currentTexts),
|
|
39
|
+
]);
|
|
40
|
+
const previousBlocks = HclUtility.keyBlocks(previousTexts, repeatedHeaders);
|
|
41
|
+
const currentBlocks = HclUtility.keyBlocks(currentTexts, repeatedHeaders);
|
|
29
42
|
const headers = [...new Set([...previousBlocks.keys(), ...currentBlocks.keys()])].sort((a, b) => a.localeCompare(b));
|
|
30
43
|
for (const header of headers) {
|
|
31
44
|
const before = previousBlocks.get(header);
|
|
@@ -43,12 +56,46 @@ export class HclUtility {
|
|
|
43
56
|
}
|
|
44
57
|
return entries.length > 0 ? entries.join('\n\n') : '<no changes>';
|
|
45
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Reads the `resource` and `data` blocks of rendered terraform, keyed by their terraform address:
|
|
61
|
+
* `<type>.<name>` for a resource, `data.<type>.<name>` for a data source. It takes one file's text or
|
|
62
|
+
* a whole {@link serialize} render, such as the `hclRender` a module test gets back, since resource
|
|
63
|
+
* and data addresses are unique across an app.
|
|
64
|
+
*
|
|
65
|
+
* It reads octo's own render format, not arbitrary HCL: one attribute or block per line, and a value
|
|
66
|
+
* spanning lines only inside brackets.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* const { resource } = HclUtility.parse(hclRender);
|
|
71
|
+
* expect(Object.keys(resource)).toContain('aws_vpc.vpc-region-475bfa');
|
|
72
|
+
* expect(resource['aws_vpc.vpc-region-475bfa'].cidr_block).toBe('10.0.0.0/16');
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
static parse(hcl) {
|
|
76
|
+
const parsed = { data: {}, resource: {} };
|
|
77
|
+
const lines = hcl.split('\n').filter((line) => !HclUtility.SECTION_HEADER.test(line));
|
|
78
|
+
for (const block of HclUtility.splitTopLevelBlocks(lines)) {
|
|
79
|
+
const blockLines = block.split('\n');
|
|
80
|
+
const header = /^(data|resource) "([^"]+)" "([^"]+)" \{$/.exec(blockLines[0]);
|
|
81
|
+
if (!header) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const [, kind, type, name] = header;
|
|
85
|
+
const body = HclUtility.parseBody(blockLines.slice(1, -1));
|
|
86
|
+
if (kind === 'resource') {
|
|
87
|
+
parsed.resource[`${type}.${name}`] = body;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
parsed.data[`data.${type}.${name}`] = body;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return parsed;
|
|
94
|
+
}
|
|
46
95
|
/**
|
|
47
96
|
* Flattens the rendered terragrunt folders into one snapshot-friendly string: folders sorted by
|
|
48
97
|
* module id, files in a stable order, each prefixed with a `# <moduleId>/<file>` header. An empty
|
|
49
98
|
* file shows a `<empty>` body, so the file is still visible in the snapshot rather than omitted.
|
|
50
|
-
*
|
|
51
|
-
* @internal
|
|
52
99
|
*/
|
|
53
100
|
static serialize(moduleFiles) {
|
|
54
101
|
const parts = [];
|
|
@@ -75,8 +122,6 @@ export class HclUtility {
|
|
|
75
122
|
* is safe to embed in a snapshot.
|
|
76
123
|
*
|
|
77
124
|
* Returns an empty string when the two inputs are identical.
|
|
78
|
-
*
|
|
79
|
-
* @internal
|
|
80
125
|
*/
|
|
81
126
|
static unifiedDiff(before, after, { contextLines = 3 } = {}) {
|
|
82
127
|
const a = before.length === 0 ? [] : before.split('\n');
|
|
@@ -139,6 +184,36 @@ export class HclUtility {
|
|
|
139
184
|
}
|
|
140
185
|
return hunks.join('\n');
|
|
141
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* How many brackets a line opens, less how many it closes, ignoring those inside quoted strings.
|
|
189
|
+
*
|
|
190
|
+
* @internal
|
|
191
|
+
*/
|
|
192
|
+
static bracketDepth(line) {
|
|
193
|
+
let depth = 0;
|
|
194
|
+
let inString = false;
|
|
195
|
+
for (let index = 0; index < line.length; index++) {
|
|
196
|
+
const character = line[index];
|
|
197
|
+
if (inString) {
|
|
198
|
+
if (character === '\\') {
|
|
199
|
+
index++;
|
|
200
|
+
}
|
|
201
|
+
else if (character === '"') {
|
|
202
|
+
inString = false;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
else if (character === '"') {
|
|
206
|
+
inString = true;
|
|
207
|
+
}
|
|
208
|
+
else if ('([{'.includes(character)) {
|
|
209
|
+
depth++;
|
|
210
|
+
}
|
|
211
|
+
else if (')]}'.includes(character)) {
|
|
212
|
+
depth--;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return depth;
|
|
216
|
+
}
|
|
142
217
|
/**
|
|
143
218
|
* Builds the shortest edit script between two line arrays via the classic longest-common-subsequence
|
|
144
219
|
* DP. Quadratic in the number of lines, which is fine for the small blocks this serves. A removal is
|
|
@@ -185,9 +260,28 @@ export class HclUtility {
|
|
|
185
260
|
return operations;
|
|
186
261
|
}
|
|
187
262
|
/**
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
263
|
+
* Keys blocks by their header line (e.g. `resource "aws_vpc" "vpc-x" {`), adding the first body line
|
|
264
|
+
* for a header in `repeatedHeaders`, and an occurrence number for any key still taken.
|
|
265
|
+
*
|
|
266
|
+
* @internal
|
|
267
|
+
*/
|
|
268
|
+
static keyBlocks(texts, repeatedHeaders) {
|
|
269
|
+
const blocks = new Map();
|
|
270
|
+
for (const text of texts) {
|
|
271
|
+
const [header, firstBodyLine = ''] = text.split('\n');
|
|
272
|
+
const baseKey = repeatedHeaders.has(header) ? `${header} ${firstBodyLine.trim()}` : header;
|
|
273
|
+
let key = baseKey;
|
|
274
|
+
for (let occurrence = 2; blocks.has(key); occurrence++) {
|
|
275
|
+
key = `${baseKey} #${occurrence}`;
|
|
276
|
+
}
|
|
277
|
+
blocks.set(key, text);
|
|
278
|
+
}
|
|
279
|
+
return blocks;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Splits a {@link serialize} render into its top-level blocks, grouped by `moduleId/file`. Relies on
|
|
283
|
+
* octo's regular render format — `# <moduleId>/<file>` section headers, and a top-level block
|
|
284
|
+
* starting on a line with no indent that is not a closing bracket.
|
|
191
285
|
*
|
|
192
286
|
* @internal
|
|
193
287
|
*/
|
|
@@ -202,18 +296,11 @@ export class HclUtility {
|
|
|
202
296
|
if (currentKey === undefined) {
|
|
203
297
|
return;
|
|
204
298
|
}
|
|
205
|
-
|
|
206
|
-
for (const block of buffer.join('\n').split(/\n\s*\n/)) {
|
|
207
|
-
const trimmed = block.trim();
|
|
208
|
-
if (trimmed) {
|
|
209
|
-
blocks.set(trimmed.split('\n')[0], trimmed);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
sections.set(currentKey, blocks);
|
|
299
|
+
sections.set(currentKey, HclUtility.splitTopLevelBlocks(buffer));
|
|
213
300
|
buffer = [];
|
|
214
301
|
};
|
|
215
302
|
for (const line of serialized.split('\n')) {
|
|
216
|
-
const header =
|
|
303
|
+
const header = HclUtility.SECTION_HEADER.exec(line);
|
|
217
304
|
if (header) {
|
|
218
305
|
flush();
|
|
219
306
|
currentKey = header[1];
|
|
@@ -225,5 +312,91 @@ export class HclUtility {
|
|
|
225
312
|
flush();
|
|
226
313
|
return sections;
|
|
227
314
|
}
|
|
315
|
+
/**
|
|
316
|
+
* Parses the lines inside a block. An attribute whose value opens more brackets than it closes runs
|
|
317
|
+
* on to the line that closes them, and is kept as text; `key = {` on its own is an object, parsed
|
|
318
|
+
* like a nested block.
|
|
319
|
+
*
|
|
320
|
+
* @internal
|
|
321
|
+
*/
|
|
322
|
+
static parseBody(lines) {
|
|
323
|
+
const body = {};
|
|
324
|
+
// Finds the line closing the block or value opened on line `start`.
|
|
325
|
+
const closingLine = (start) => {
|
|
326
|
+
let depth = 0;
|
|
327
|
+
for (let index = start; index < lines.length; index++) {
|
|
328
|
+
depth += HclUtility.bracketDepth(lines[index]);
|
|
329
|
+
if (depth <= 0) {
|
|
330
|
+
return index;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return lines.length - 1;
|
|
334
|
+
};
|
|
335
|
+
let index = 0;
|
|
336
|
+
while (index < lines.length) {
|
|
337
|
+
const line = lines[index];
|
|
338
|
+
const attribute = /^\s*([\w-]+)\s*=\s*(.*)$/.exec(line);
|
|
339
|
+
if (attribute) {
|
|
340
|
+
const [, key, value] = attribute;
|
|
341
|
+
const end = closingLine(index);
|
|
342
|
+
if (value === '{') {
|
|
343
|
+
body[key] = HclUtility.parseBody(lines.slice(index + 1, end));
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
const text = [value, ...lines.slice(index + 1, end + 1)].join('\n').trim();
|
|
347
|
+
body[key] = /^"(?:[^"\\]|\\.)*"$/.test(text) ? text.slice(1, -1) : text;
|
|
348
|
+
}
|
|
349
|
+
index = end + 1;
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
const nestedBlock = /^\s*([\w-]+)(?:\s+"[^"]*")*\s*\{$/.exec(line);
|
|
353
|
+
if (nestedBlock) {
|
|
354
|
+
const [, key] = nestedBlock;
|
|
355
|
+
const end = closingLine(index);
|
|
356
|
+
const nested = HclUtility.parseBody(lines.slice(index + 1, end));
|
|
357
|
+
const existing = body[key];
|
|
358
|
+
if (existing === undefined) {
|
|
359
|
+
body[key] = nested;
|
|
360
|
+
}
|
|
361
|
+
else if (Array.isArray(existing)) {
|
|
362
|
+
existing.push(nested);
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
body[key] = [existing, nested];
|
|
366
|
+
}
|
|
367
|
+
index = end + 1;
|
|
368
|
+
continue;
|
|
369
|
+
}
|
|
370
|
+
index++;
|
|
371
|
+
}
|
|
372
|
+
return body;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Returns the header lines that more than one of these blocks starts with.
|
|
376
|
+
*
|
|
377
|
+
* @internal
|
|
378
|
+
*/
|
|
379
|
+
static repeatedHeaders(texts) {
|
|
380
|
+
const headers = texts.map((t) => t.split('\n')[0]);
|
|
381
|
+
return headers.filter((h, index) => headers.indexOf(h) !== index);
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Splits lines into top-level blocks, each trimmed. A block starts on a line with no indent that is not a
|
|
385
|
+
* closing bracket, so a blank line inside a block does not end it.
|
|
386
|
+
*
|
|
387
|
+
* @internal
|
|
388
|
+
*/
|
|
389
|
+
static splitTopLevelBlocks(lines) {
|
|
390
|
+
const blocks = [];
|
|
391
|
+
for (const line of lines) {
|
|
392
|
+
if (line.trim() && !/^[\s)\]}]/.test(line)) {
|
|
393
|
+
blocks.push([line]);
|
|
394
|
+
}
|
|
395
|
+
else if (blocks.length > 0) {
|
|
396
|
+
blocks[blocks.length - 1].push(line);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
return blocks.map((block) => block.join('\n').trim());
|
|
400
|
+
}
|
|
228
401
|
}
|
|
229
402
|
//# sourceMappingURL=hcl.utility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hcl.utility.js","sourceRoot":"","sources":["../../../src/utilities/hcl/hcl.utility.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hcl.utility.js","sourceRoot":"","sources":["../../../src/utilities/hcl/hcl.utility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place octo speaks HTTP.
|
|
3
|
+
*
|
|
4
|
+
* A response is handed back whatever its status, so the caller decides what a refusal means instead
|
|
5
|
+
* of catching one. Only a request that never reached a server throws.
|
|
6
|
+
*
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export declare class HttpUtility {
|
|
10
|
+
/**
|
|
11
|
+
* Downloads `url` into `filePath`, streaming it so its size is not bounded by memory. False when the
|
|
12
|
+
* server refused it or the download was cut short, which can leave part of the file behind.
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
* @throws {@link TransactionError} When the host could not be reached at all.
|
|
16
|
+
*/
|
|
17
|
+
static downloadToFile(url: string, filePath: string): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* What a refused request said went wrong, as one line. A service that answers a list - a failed
|
|
20
|
+
* validation usually does - is read as a sentence, and a body that is not JSON as its status.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
static readErrorMessage(response: Response): Promise<string>;
|
|
25
|
+
/**
|
|
26
|
+
* A body may be a stream, which is sent as it is read rather than held in memory. A stream's length
|
|
27
|
+
* is unknown to fetch, so a server that needs one is given `Content-Length` in `headers`.
|
|
28
|
+
*
|
|
29
|
+
* @internal
|
|
30
|
+
* @throws {@link TransactionError} When the host could not be reached at all, which is a different
|
|
31
|
+
* thing from being refused by it and is the caller's to report differently.
|
|
32
|
+
*/
|
|
33
|
+
static send(url: string, { body, headers, method }?: {
|
|
34
|
+
body?: BodyInit;
|
|
35
|
+
headers?: Record<string, string>;
|
|
36
|
+
method?: string;
|
|
37
|
+
}): Promise<Response>;
|
|
38
|
+
/**
|
|
39
|
+
* {@link HttpUtility.send} with a JSON body, which is every request octo makes that carries one
|
|
40
|
+
* other than an upload.
|
|
41
|
+
*
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
static sendJson(url: string, { body, headers, method }?: {
|
|
45
|
+
body?: unknown;
|
|
46
|
+
headers?: Record<string, string>;
|
|
47
|
+
method?: string;
|
|
48
|
+
}): Promise<Response>;
|
|
49
|
+
/**
|
|
50
|
+
* PUTs the file at `filePath` to `url`, streaming it so its size is not bounded by memory, with its
|
|
51
|
+
* `Content-Length`, which a presigned URL is usually signed with.
|
|
52
|
+
*
|
|
53
|
+
* @internal
|
|
54
|
+
* @throws {@link TransactionError} When the host could not be reached at all.
|
|
55
|
+
*/
|
|
56
|
+
static uploadFile(url: string, filePath: string, headers?: Record<string, string>): Promise<Response>;
|
|
57
|
+
}
|