@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.
Files changed (221) hide show
  1. package/README.md +108 -21
  2. package/dist/app.type.d.ts +141 -22
  3. package/dist/app.type.js.map +1 -1
  4. package/dist/decorators/model.decorator.d.ts +3 -5
  5. package/dist/decorators/model.decorator.js +1 -6
  6. package/dist/decorators/model.decorator.js.map +1 -1
  7. package/dist/decorators/on-event.decorator.d.ts +2 -2
  8. package/dist/decorators/on-event.decorator.js.map +1 -1
  9. package/dist/decorators/resource.decorator.d.ts +50 -1
  10. package/dist/decorators/resource.decorator.js +38 -1
  11. package/dist/decorators/resource.decorator.js.map +1 -1
  12. package/dist/errors/schema.error.d.ts +8 -1
  13. package/dist/errors/schema.error.js +5 -1
  14. package/dist/errors/schema.error.js.map +1 -1
  15. package/dist/errors/terraform.error.d.ts +4 -3
  16. package/dist/errors/terraform.error.js +4 -3
  17. package/dist/errors/terraform.error.js.map +1 -1
  18. package/dist/errors/transaction.error.d.ts +32 -2
  19. package/dist/errors/transaction.error.js +22 -0
  20. package/dist/errors/transaction.error.js.map +1 -1
  21. package/dist/events/action.event.d.ts +8 -2
  22. package/dist/events/action.event.js +2 -2
  23. package/dist/events/action.event.js.map +1 -1
  24. package/dist/events/command.event.d.ts +43 -0
  25. package/dist/events/command.event.js +33 -0
  26. package/dist/events/command.event.js.map +1 -0
  27. package/dist/events/event.model.d.ts +7 -5
  28. package/dist/events/event.model.js +5 -3
  29. package/dist/events/event.model.js.map +1 -1
  30. package/dist/events/hook/commit.hook.event.d.ts +1 -1
  31. package/dist/events/hook/commit.hook.event.js.map +1 -1
  32. package/dist/events/hook/hook.event.d.ts +1 -1
  33. package/dist/events/hook/hook.event.js.map +1 -1
  34. package/dist/events/hook/model.hook.event.d.ts +1 -1
  35. package/dist/events/hook/model.hook.event.js.map +1 -1
  36. package/dist/events/hook/resource.hook.event.d.ts +1 -1
  37. package/dist/events/hook/resource.hook.event.js.map +1 -1
  38. package/dist/events/index.d.ts +2 -0
  39. package/dist/events/index.js +2 -0
  40. package/dist/events/index.js.map +1 -1
  41. package/dist/events/mode-result.event.d.ts +1 -1
  42. package/dist/events/mode-result.event.js.map +1 -1
  43. package/dist/events/mode.event.d.ts +8 -4
  44. package/dist/events/mode.event.js.map +1 -1
  45. package/dist/events/module.event.d.ts +7 -3
  46. package/dist/events/module.event.js +3 -2
  47. package/dist/events/module.event.js.map +1 -1
  48. package/dist/events/registration.event.d.ts +1 -1
  49. package/dist/events/registration.event.js.map +1 -1
  50. package/dist/events/serialization.event.d.ts +1 -1
  51. package/dist/events/serialization.event.js.map +1 -1
  52. package/dist/events/state.event.d.ts +102 -0
  53. package/dist/events/state.event.js +69 -0
  54. package/dist/events/state.event.js.map +1 -0
  55. package/dist/events/terraform.event.d.ts +37 -1
  56. package/dist/events/terraform.event.js +24 -0
  57. package/dist/events/terraform.event.js.map +1 -1
  58. package/dist/events/transaction.event.d.ts +3 -3
  59. package/dist/events/transaction.event.js +1 -1
  60. package/dist/events/transaction.event.js.map +1 -1
  61. package/dist/functions/container/container.js +1 -1
  62. package/dist/functions/container/container.js.map +1 -1
  63. package/dist/functions/container/test-container.js +2 -2
  64. package/dist/functions/container/test-container.js.map +1 -1
  65. package/dist/functions/dependency/dependency.d.ts +9 -22
  66. package/dist/functions/dependency/dependency.js +5 -1
  67. package/dist/functions/dependency/dependency.js.map +1 -1
  68. package/dist/functions/diff/diff.d.ts +14 -7
  69. package/dist/functions/diff/diff.js.map +1 -1
  70. package/dist/functions/node/node-action.abstract.d.ts +8 -10
  71. package/dist/functions/node/node-action.abstract.js +10 -16
  72. package/dist/functions/node/node-action.abstract.js.map +1 -1
  73. package/dist/functions/node/node.abstract.js +21 -10
  74. package/dist/functions/node/node.abstract.js.map +1 -1
  75. package/dist/functions/node/node.interface.d.ts +2 -1
  76. package/dist/functions/schema/schema.js +1 -1
  77. package/dist/functions/schema/schema.js.map +1 -1
  78. package/dist/index.d.ts +8 -6
  79. package/dist/index.js +6 -4
  80. package/dist/index.js.map +1 -1
  81. package/dist/index.type.d.ts +5 -0
  82. package/dist/index.type.js +2 -0
  83. package/dist/index.type.js.map +1 -0
  84. package/dist/main.d.ts +4 -3
  85. package/dist/main.js +27 -11
  86. package/dist/main.js.map +1 -1
  87. package/dist/models/account/account.model.d.ts +6 -0
  88. package/dist/models/account/account.model.js +16 -0
  89. package/dist/models/account/account.model.js.map +1 -1
  90. package/dist/models/app/app.model.d.ts +0 -10
  91. package/dist/models/app/app.model.js +0 -30
  92. package/dist/models/app/app.model.js.map +1 -1
  93. package/dist/models/deployment/deployment.schema.d.ts +4 -0
  94. package/dist/models/deployment/deployment.schema.js +4 -0
  95. package/dist/models/deployment/deployment.schema.js.map +1 -1
  96. package/dist/models/environment/environment.model.d.ts +2 -2
  97. package/dist/models/environment/environment.model.js +2 -2
  98. package/dist/models/execution/execution.model.d.ts +1 -1
  99. package/dist/models/execution/execution.model.js +1 -1
  100. package/dist/models/image/image.model.d.ts +4 -3
  101. package/dist/models/image/image.model.js +7 -6
  102. package/dist/models/image/image.model.js.map +1 -1
  103. package/dist/models/model.abstract.js +1 -1
  104. package/dist/models/model.abstract.js.map +1 -1
  105. package/dist/models/pipeline/pipeline.model.d.ts +1 -1
  106. package/dist/models/pipeline/pipeline.model.js +1 -1
  107. package/dist/models/server/server.model.d.ts +2 -2
  108. package/dist/models/server/server.model.js +2 -2
  109. package/dist/models/service/service.model.d.ts +28 -11
  110. package/dist/models/service/service.model.js +56 -16
  111. package/dist/models/service/service.model.js.map +1 -1
  112. package/dist/models/service/service.schema.d.ts +46 -2
  113. package/dist/models/service/service.schema.js +54 -2
  114. package/dist/models/service/service.schema.js.map +1 -1
  115. package/dist/modes/commit.mode.d.ts +2 -2
  116. package/dist/modes/commit.mode.js +2 -2
  117. package/dist/modes/generate.mode.d.ts +2 -1
  118. package/dist/modes/generate.mode.js +3 -2
  119. package/dist/modes/generate.mode.js.map +1 -1
  120. package/dist/modes/run-action.mode.d.ts +1 -1
  121. package/dist/modes/run-action.mode.js +1 -1
  122. package/dist/modes/validate.mode.d.ts +24 -0
  123. package/dist/modes/validate.mode.js +89 -11
  124. package/dist/modes/validate.mode.js.map +1 -1
  125. package/dist/modules/module.container.d.ts +7 -1
  126. package/dist/modules/module.container.js +41 -5
  127. package/dist/modules/module.container.js.map +1 -1
  128. package/dist/modules/test-module.container.js +35 -83
  129. package/dist/modules/test-module.container.js.map +1 -1
  130. package/dist/overlays/overlay.abstract.js +1 -1
  131. package/dist/overlays/overlay.abstract.js.map +1 -1
  132. package/dist/resources/resource-action.interface.d.ts +4 -2
  133. package/dist/resources/resource.abstract.d.ts +50 -8
  134. package/dist/resources/resource.abstract.js +63 -32
  135. package/dist/resources/resource.abstract.js.map +1 -1
  136. package/dist/resources/resource.interface.d.ts +0 -2
  137. package/dist/resources/resource.schema.d.ts +11 -1
  138. package/dist/resources/resource.schema.js +11 -1
  139. package/dist/resources/resource.schema.js.map +1 -1
  140. package/dist/services/event/event.service.d.ts +2 -2
  141. package/dist/services/event/event.service.js.map +1 -1
  142. package/dist/services/input/input.service.d.ts +30 -2
  143. package/dist/services/input/input.service.js +71 -4
  144. package/dist/services/input/input.service.js.map +1 -1
  145. package/dist/services/serialization/model/model-serialization.service.d.ts +4 -6
  146. package/dist/services/serialization/model/model-serialization.service.js +20 -17
  147. package/dist/services/serialization/model/model-serialization.service.js.map +1 -1
  148. package/dist/services/serialization/resource/resource-serialization.service.d.ts +7 -6
  149. package/dist/services/serialization/resource/resource-serialization.service.js +25 -12
  150. package/dist/services/serialization/resource/resource-serialization.service.js.map +1 -1
  151. package/dist/services/state-management/local.state-provider.d.ts +25 -9
  152. package/dist/services/state-management/local.state-provider.js +127 -21
  153. package/dist/services/state-management/local.state-provider.js.map +1 -1
  154. package/dist/services/state-management/remote.state-provider.d.ts +216 -0
  155. package/dist/services/state-management/remote.state-provider.js +645 -0
  156. package/dist/services/state-management/remote.state-provider.js.map +1 -0
  157. package/dist/services/state-management/state-management.service.d.ts +83 -40
  158. package/dist/services/state-management/state-management.service.js +130 -26
  159. package/dist/services/state-management/state-management.service.js.map +1 -1
  160. package/dist/services/state-management/state-provider.interface.d.ts +50 -9
  161. package/dist/services/state-management/state-provider.interface.js +14 -1
  162. package/dist/services/state-management/state-provider.interface.js.map +1 -1
  163. package/dist/services/state-management/terraform-state.service.d.ts +32 -9
  164. package/dist/services/state-management/terraform-state.service.js +64 -21
  165. package/dist/services/state-management/terraform-state.service.js.map +1 -1
  166. package/dist/services/state-management/test.state-provider.d.ts +11 -10
  167. package/dist/services/state-management/test.state-provider.js +35 -14
  168. package/dist/services/state-management/test.state-provider.js.map +1 -1
  169. package/dist/services/terraform/terraform.service.d.ts +57 -3
  170. package/dist/services/terraform/terraform.service.js +95 -8
  171. package/dist/services/terraform/terraform.service.js.map +1 -1
  172. package/dist/services/terraform/terraform.type.js +1 -1
  173. package/dist/services/terraform/terraform.type.js.map +1 -1
  174. package/dist/services/transaction/transaction.service.d.ts +29 -5
  175. package/dist/services/transaction/transaction.service.js +198 -34
  176. package/dist/services/transaction/transaction.service.js.map +1 -1
  177. package/dist/services/validation/validation.service.d.ts +2 -2
  178. package/dist/{functions → utilities}/diff/diff.utility.d.ts +2 -1
  179. package/dist/{functions → utilities}/diff/diff.utility.js +4 -3
  180. package/dist/utilities/diff/diff.utility.js.map +1 -0
  181. package/dist/utilities/file/file.utility.d.ts +6 -7
  182. package/dist/utilities/file/file.utility.js +13 -68
  183. package/dist/utilities/file/file.utility.js.map +1 -1
  184. package/dist/utilities/hcl/hcl.utility.d.ts +83 -16
  185. package/dist/utilities/hcl/hcl.utility.js +200 -27
  186. package/dist/utilities/hcl/hcl.utility.js.map +1 -1
  187. package/dist/utilities/http/http.utility.d.ts +57 -0
  188. package/dist/utilities/http/http.utility.js +98 -0
  189. package/dist/utilities/http/http.utility.js.map +1 -0
  190. package/dist/utilities/string/string.utility.d.ts +23 -3
  191. package/dist/utilities/string/string.utility.js +29 -3
  192. package/dist/utilities/string/string.utility.js.map +1 -1
  193. package/dist/utilities/terraform/terraform.utility.d.ts +70 -21
  194. package/dist/utilities/terraform/terraform.utility.js +255 -66
  195. package/dist/utilities/terraform/terraform.utility.js.map +1 -1
  196. package/dist/utilities/test-helpers/test-classes.d.ts +19 -0
  197. package/dist/utilities/test-helpers/test-classes.js +22 -0
  198. package/dist/utilities/test-helpers/test-classes.js.map +1 -1
  199. package/dist/utilities/test-helpers/test-models.d.ts +8 -1
  200. package/dist/utilities/test-helpers/test-models.js +25 -12
  201. package/dist/utilities/test-helpers/test-models.js.map +1 -1
  202. package/dist/utilities/test-helpers/test-modes.d.ts +1 -1
  203. package/dist/utilities/test-helpers/test-modes.js +36 -13
  204. package/dist/utilities/test-helpers/test-modes.js.map +1 -1
  205. package/dist/utilities/test-helpers/test-modules.d.ts +6 -0
  206. package/dist/utilities/test-helpers/test-modules.js +6 -0
  207. package/dist/utilities/test-helpers/test-modules.js.map +1 -1
  208. package/dist/utilities/test-helpers/test-overlays.d.ts +3 -1
  209. package/dist/utilities/test-helpers/test-overlays.js +8 -2
  210. package/dist/utilities/test-helpers/test-overlays.js.map +1 -1
  211. package/dist/utilities/test-helpers/test-resources.d.ts +4 -2
  212. package/dist/utilities/test-helpers/test-resources.js +22 -20
  213. package/dist/utilities/test-helpers/test-resources.js.map +1 -1
  214. package/package.json +7 -2
  215. package/dist/functions/diff/diff.utility.js.map +0 -1
  216. package/dist/services/state-management/file-app-lock.utility.d.ts +0 -43
  217. package/dist/services/state-management/file-app-lock.utility.js +0 -124
  218. package/dist/services/state-management/file-app-lock.utility.js.map +0 -1
  219. package/dist/services/state-management/local-encryption.state-provider.d.ts +0 -71
  220. package/dist/services/state-management/local-encryption.state-provider.js +0 -116
  221. package/dist/services/state-management/local-encryption.state-provider.js.map +0 -1
@@ -1,84 +1,29 @@
1
- import { createCipheriv, createDecipheriv, createHash } from 'node:crypto';
2
- import { createReadStream, createWriteStream } from 'node:fs';
3
- import { mkdir, open } from 'node:fs/promises';
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 decryptFileToBuffer(inputFilePath, key) {
17
- // sha256 always produces a 32 byte key.
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
- * Creates a directory and every missing parent of it. A directory that already exists is not an error.
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 ensureDirectory(directoryPath) {
81
- await mkdir(directoryPath, { recursive: true });
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":"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"}
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
- * Serializes and diffs octo's rendered terraform into stable, snapshot-friendly strings.
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
- * The render format is octo-owned and regular — `# <moduleId>/<file>` section headers, blank-line
6
- * separated top-level blocks — so everything here is plain string work needing no HCL parser or
7
- * external diff library. {@link unifiedDiff} is the generic line-diff engine; {@link diffBlocks}
8
- * layers octo's block structure on top of it.
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
- * @internal
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
- * so a body change reads as `~` (a line-level {@link unifiedDiff} of what changed inside the block),
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
- * Splits a {@link serialize} render into top-level blocks, keyed by `moduleId/file` and then by the
55
- * block's header line (e.g. `resource "aws_vpc" "vpc-x" {`). Relies on octo's regular render format —
56
- * `# <moduleId>/<file>` section headers, blank-line-separated top-level blocks.
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
- * Serializes and diffs octo's rendered terraform into stable, snapshot-friendly strings.
2
+ * Reads, serializes and diffs the terraform octo renders.
3
3
  *
4
- * The render format is octo-owned and regular — `# <moduleId>/<file>` section headers, blank-line
5
- * separated top-level blocks — so everything here is plain string work needing no HCL parser or
6
- * external diff library. {@link unifiedDiff} is the generic line-diff engine; {@link diffBlocks}
7
- * layers octo's block structure on top of it.
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
- * @internal
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
- * so a body change reads as `~` (a line-level {@link unifiedDiff} of what changed inside the block),
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 previousBlocks = previousSections.get(key) ?? new Map();
28
- const currentBlocks = currentSections.get(key) ?? new Map();
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
- * Splits a {@link serialize} render into top-level blocks, keyed by `moduleId/file` and then by the
189
- * block's header line (e.g. `resource "aws_vpc" "vpc-x" {`). Relies on octo's regular render format —
190
- * `# <moduleId>/<file>` section headers, blank-line-separated top-level blocks.
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
- const blocks = new Map();
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 = /^# (.+\/.+\.(?:tf|hcl))$/.exec(line);
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
+ }