@cdktn/cli-core 0.22.0-pre.2

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 (154) hide show
  1. package/README.md +3 -0
  2. package/ambient.d.ts +13 -0
  3. package/eslint.config.mjs +82 -0
  4. package/jest.config.js +20 -0
  5. package/package.json +139 -0
  6. package/src/lib/cdktf-config.d.ts +16 -0
  7. package/src/lib/cdktf-config.d.ts.map +1 -0
  8. package/src/lib/cdktf-config.js +108 -0
  9. package/src/lib/cdktf-project-io-handler.d.ts +20 -0
  10. package/src/lib/cdktf-project-io-handler.d.ts.map +1 -0
  11. package/src/lib/cdktf-project-io-handler.js +84 -0
  12. package/src/lib/cdktf-project.d.ts +111 -0
  13. package/src/lib/cdktf-project.d.ts.map +1 -0
  14. package/src/lib/cdktf-project.js +371 -0
  15. package/src/lib/cdktf-stack.d.ts +134 -0
  16. package/src/lib/cdktf-stack.d.ts.map +1 -0
  17. package/src/lib/cdktf-stack.js +386 -0
  18. package/src/lib/convert.d.ts +6 -0
  19. package/src/lib/convert.d.ts.map +1 -0
  20. package/src/lib/convert.js +51 -0
  21. package/src/lib/dependencies/cdktf-config-manager.d.ts +12 -0
  22. package/src/lib/dependencies/cdktf-config-manager.d.ts.map +1 -0
  23. package/src/lib/dependencies/cdktf-config-manager.js +36 -0
  24. package/src/lib/dependencies/dependency-manager.d.ts +84 -0
  25. package/src/lib/dependencies/dependency-manager.d.ts.map +1 -0
  26. package/src/lib/dependencies/dependency-manager.js +365 -0
  27. package/src/lib/dependencies/package-manager.d.ts +18 -0
  28. package/src/lib/dependencies/package-manager.d.ts.map +1 -0
  29. package/src/lib/dependencies/package-manager.js +574 -0
  30. package/src/lib/dependencies/prebuilt-providers.d.ts +18 -0
  31. package/src/lib/dependencies/prebuilt-providers.d.ts.map +1 -0
  32. package/src/lib/dependencies/prebuilt-providers.js +204 -0
  33. package/src/lib/dependencies/registry-api.d.ts +8 -0
  34. package/src/lib/dependencies/registry-api.d.ts.map +1 -0
  35. package/src/lib/dependencies/registry-api.js +77 -0
  36. package/src/lib/dependencies/version-constraints.d.ts +8 -0
  37. package/src/lib/dependencies/version-constraints.d.ts.map +1 -0
  38. package/src/lib/dependencies/version-constraints.js +95 -0
  39. package/src/lib/error-reporting.d.ts +10 -0
  40. package/src/lib/error-reporting.d.ts.map +1 -0
  41. package/src/lib/error-reporting.js +133 -0
  42. package/src/lib/errors.d.ts +6 -0
  43. package/src/lib/errors.d.ts.map +1 -0
  44. package/src/lib/errors.js +10 -0
  45. package/src/lib/execution-logs.d.ts +3 -0
  46. package/src/lib/execution-logs.d.ts.map +1 -0
  47. package/src/lib/execution-logs.js +47 -0
  48. package/src/lib/get.d.ts +25 -0
  49. package/src/lib/get.d.ts.map +1 -0
  50. package/src/lib/get.js +90 -0
  51. package/src/lib/helpers/stack-helpers.d.ts +16 -0
  52. package/src/lib/helpers/stack-helpers.d.ts.map +1 -0
  53. package/src/lib/helpers/stack-helpers.js +155 -0
  54. package/src/lib/index.d.ts +15 -0
  55. package/src/lib/index.d.ts.map +1 -0
  56. package/src/lib/index.js +44 -0
  57. package/src/lib/init.d.ts +37 -0
  58. package/src/lib/init.d.ts.map +1 -0
  59. package/src/lib/init.js +131 -0
  60. package/src/lib/local-provider-constraints.d.ts +28 -0
  61. package/src/lib/local-provider-constraints.d.ts.map +1 -0
  62. package/src/lib/local-provider-constraints.js +95 -0
  63. package/src/lib/local-provider-versions.d.ts +12 -0
  64. package/src/lib/local-provider-versions.d.ts.map +1 -0
  65. package/src/lib/local-provider-versions.js +73 -0
  66. package/src/lib/models/deploy-machine.d.ts +128 -0
  67. package/src/lib/models/deploy-machine.d.ts.map +1 -0
  68. package/src/lib/models/deploy-machine.js +280 -0
  69. package/src/lib/models/pty-process.d.ts +29 -0
  70. package/src/lib/models/pty-process.d.ts.map +1 -0
  71. package/src/lib/models/pty-process.js +132 -0
  72. package/src/lib/models/schema.d.ts +2307 -0
  73. package/src/lib/models/schema.d.ts.map +1 -0
  74. package/src/lib/models/schema.js +181 -0
  75. package/src/lib/models/terraform-cli.d.ts +72 -0
  76. package/src/lib/models/terraform-cli.d.ts.map +1 -0
  77. package/src/lib/models/terraform-cli.js +357 -0
  78. package/src/lib/models/terraform.d.ts +125 -0
  79. package/src/lib/models/terraform.d.ts.map +1 -0
  80. package/src/lib/models/terraform.js +72 -0
  81. package/src/lib/output.d.ts +23 -0
  82. package/src/lib/output.d.ts.map +1 -0
  83. package/src/lib/output.js +211 -0
  84. package/src/lib/provider-add.d.ts +15 -0
  85. package/src/lib/provider-add.d.ts.map +1 -0
  86. package/src/lib/provider-add.js +30 -0
  87. package/src/lib/server/terraform-logs.d.ts +2 -0
  88. package/src/lib/server/terraform-logs.d.ts.map +1 -0
  89. package/src/lib/server/terraform-logs.js +19 -0
  90. package/src/lib/synth-stack.d.ts +29 -0
  91. package/src/lib/synth-stack.d.ts.map +1 -0
  92. package/src/lib/synth-stack.js +251 -0
  93. package/src/lib/synth.d.ts +7 -0
  94. package/src/lib/synth.d.ts.map +1 -0
  95. package/src/lib/synth.js +67 -0
  96. package/src/lib/terraform-json.d.ts +1015 -0
  97. package/src/lib/terraform-json.d.ts.map +1 -0
  98. package/src/lib/terraform-json.js +82 -0
  99. package/src/lib/terraform-provider-lock.d.ts +25 -0
  100. package/src/lib/terraform-provider-lock.d.ts.map +1 -0
  101. package/src/lib/terraform-provider-lock.js +95 -0
  102. package/src/lib/watch.d.ts +16 -0
  103. package/src/lib/watch.d.ts.map +1 -0
  104. package/src/lib/watch.js +155 -0
  105. package/templates/csharp/.hooks.sscaff.js +63 -0
  106. package/templates/csharp/MainStack.cs +15 -0
  107. package/templates/csharp/MyTerraformStack.csproj +13 -0
  108. package/templates/csharp/Program.cs +17 -0
  109. package/templates/csharp/TestProgram.cs +42 -0
  110. package/templates/csharp/cdktf.json +11 -0
  111. package/templates/csharp/help +42 -0
  112. package/templates/csharp/{{}}.gitignore +345 -0
  113. package/templates/go/.hooks.sscaff.js +70 -0
  114. package/templates/go/cdktf.json +12 -0
  115. package/templates/go/go.mod +8 -0
  116. package/templates/go/help +32 -0
  117. package/templates/go/main.go +22 -0
  118. package/templates/go/main_test.go +42 -0
  119. package/templates/go/{{}}.gitignore +21 -0
  120. package/templates/java/.hooks.sscaff.js +64 -0
  121. package/templates/java/build.gradle +55 -0
  122. package/templates/java/cdktf.json +12 -0
  123. package/templates/java/gradle.properties +1 -0
  124. package/templates/java/gradlew +248 -0
  125. package/templates/java/gradlew.bat +92 -0
  126. package/templates/java/help +35 -0
  127. package/templates/java/settings.gradle +5 -0
  128. package/templates/java/src/main/java/com/mycompany/app/Main.java +16 -0
  129. package/templates/java/src/main/java/com/mycompany/app/MainStack.java +14 -0
  130. package/templates/java/src/test/java/com/company/app/MainTest.java +38 -0
  131. package/templates/java/{{}}.gitignore +14 -0
  132. package/templates/python/.hooks.sscaff.js +59 -0
  133. package/templates/python/Pipfile +7 -0
  134. package/templates/python/cdktf.json +12 -0
  135. package/templates/python/help +42 -0
  136. package/templates/python/main-test.py +26 -0
  137. package/templates/python/main.py +16 -0
  138. package/templates/python/{{}}.gitignore +7 -0
  139. package/templates/python-pip/.hooks.sscaff.js +63 -0
  140. package/templates/python-pip/cdktf.json +12 -0
  141. package/templates/python-pip/help +35 -0
  142. package/templates/python-pip/main-test.py +23 -0
  143. package/templates/python-pip/main.py +16 -0
  144. package/templates/python-pip/{{}}.gitignore +7 -0
  145. package/templates/typescript/.hooks.sscaff.js +78 -0
  146. package/templates/typescript/__tests__/main-test.ts +89 -0
  147. package/templates/typescript/cdktf.json +11 -0
  148. package/templates/typescript/help +51 -0
  149. package/templates/typescript/jest.config.js +187 -0
  150. package/templates/typescript/main.ts +14 -0
  151. package/templates/typescript/package.json +22 -0
  152. package/templates/typescript/setup.js +2 -0
  153. package/templates/typescript/tsconfig.json +35 -0
  154. package/templates/typescript/{{}}.gitignore +11 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @cdktn/cli-core
2
+
3
+ This package contains all the non-UI logic of CDKTN CLI. It is not meant to be used outside the cdktn-cli package. It's purpose is making building a package that brings a stable programmatic API easier.
package/ambient.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ // Copyright (c) HashiCorp, Inc
2
+ // Licensed under the Mozilla Public License 2.0
3
+ declare module '@skorfmann/ink-confirm-input';
4
+ declare module '@npmcli/ci-detect';
5
+
6
+ declare module 'child_process' {
7
+ interface SpawnOptions {
8
+ signal?: AbortSignal;
9
+ }
10
+ }
11
+
12
+ declare module 'tunnel-agent';
13
+ declare module "archiver";
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ import { fixupConfigRules } from "@eslint/compat";
7
+ import eslint from "@eslint/js";
8
+ import tseslint from "typescript-eslint";
9
+ import tsParser from "@typescript-eslint/parser";
10
+ import react from "eslint-plugin-react";
11
+ import prettierConfig from "eslint-plugin-prettier/recommended";
12
+ import path from "node:path";
13
+ import { fileURLToPath } from "node:url";
14
+ import js from "@eslint/js";
15
+ import { FlatCompat } from "@eslint/eslintrc";
16
+
17
+ const __filename = fileURLToPath(import.meta.url);
18
+ const __dirname = path.dirname(__filename);
19
+ const compat = new FlatCompat({
20
+ baseDirectory: __dirname,
21
+ recommendedConfig: js.configs.recommended,
22
+ allConfig: js.configs.all,
23
+ });
24
+
25
+ export default [
26
+ {
27
+ ignores: [
28
+ "**/node_modules",
29
+ "**/dist",
30
+ "**/coverage",
31
+ "**/*.d.ts",
32
+ "**/*.js",
33
+ // prettier v2 managed inline snapshots
34
+ "src/test/lib/cdktf-project.test.ts",
35
+ "src/test/lib/terraform-logs.test.ts",
36
+ "src/test/lib/execution-logs.test.ts",
37
+ ],
38
+ },
39
+ ...tseslint.config(eslint.configs.recommended, tseslint.configs.recommended),
40
+ {
41
+ settings: {
42
+ react: {
43
+ version: "detect",
44
+ },
45
+ },
46
+ },
47
+ react.configs.flat.recommended,
48
+ ...fixupConfigRules(compat.extends("plugin:react-hooks/recommended")).map(
49
+ (config) => ({
50
+ ...config,
51
+ files: ["**/*.ts", "**/*.tsx"],
52
+ }),
53
+ ),
54
+ {
55
+ files: ["**/*.ts", "**/*.tsx"],
56
+
57
+ languageOptions: {
58
+ parser: tsParser,
59
+ },
60
+
61
+ rules: {
62
+ "@typescript-eslint/no-explicit-any": 0,
63
+ "@typescript-eslint/explicit-function-return-type": 0,
64
+ "@typescript-eslint/no-use-before-define": 0,
65
+ "@typescript-eslint/explicit-module-boundary-types": 0,
66
+ "@typescript-eslint/no-var-requires": 0,
67
+ "@typescript-eslint/no-require-imports": "warn",
68
+ "@typescript-eslint/no-unused-vars": "warn",
69
+ "react/no-unescaped-entities": 0,
70
+ "no-sequences": "error",
71
+ "no-unused-vars": "warn",
72
+
73
+ "no-irregular-whitespace": [
74
+ "error",
75
+ {
76
+ skipTemplates: true,
77
+ },
78
+ ],
79
+ },
80
+ },
81
+ prettierConfig,
82
+ ];
package/jest.config.js ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
6
+ module.exports = {
7
+ roots: [
8
+ "<rootDir>"
9
+ ],
10
+ testMatch: ['**/*.test.ts', '**/*.test.tsx'],
11
+ transform: {
12
+ "^.+\\.tsx?$": "ts-jest"
13
+ },
14
+ moduleFileExtensions: [
15
+ "js",
16
+ "ts",
17
+ "tsx"
18
+ ],
19
+ prettierPath: "<rootDir>/node_modules/prettier",
20
+ }
package/package.json ADDED
@@ -0,0 +1,139 @@
1
+ {
2
+ "name": "@cdktn/cli-core",
3
+ "version": "0.22.0-pre.2",
4
+ "description": "CDK Terrain CLI Core, meant for internal use only",
5
+ "scripts": {
6
+ "build": "tsc",
7
+ "watch": "tsc -w",
8
+ "watch-preserve-output": "tsc -w --preserveWatchOutput",
9
+ "lint": "eslint .",
10
+ "lint:fix": "eslint . --fix",
11
+ "pretest": "yarn build",
12
+ "pretest:ci": "yarn build",
13
+ "test": "yarn lint && jest",
14
+ "test:ci": "yarn lint && jest --ci",
15
+ "test:update": "jest -u --maxWorkers=50%",
16
+ "jest-watch": "jest --watch",
17
+ "package": "./package.sh",
18
+ "dist-clean": "rm -rf dist",
19
+ "package:js": "./package.sh"
20
+ },
21
+ "main": "src/lib/index.js",
22
+ "types": "src/lib/index.d.ts",
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "git://github.com/open-constructs/cdk-terrain.git",
29
+ "directory": "packages/@cdktn/cli-core"
30
+ },
31
+ "author": {
32
+ "name": "OpenConstructs",
33
+ "url": "https://github.com/open-constructs"
34
+ },
35
+ "keywords": [
36
+ "cdk",
37
+ "cdktf",
38
+ "terraform"
39
+ ],
40
+ "license": "MPL-2.0",
41
+ "dependencies": {
42
+ "@cdktf/node-pty-prebuilt-multiarch": "^0.10.2",
43
+ "@cdktn/commons": "0.22.0-pre.2",
44
+ "@cdktn/hcl-tools": "0.22.0-pre.2",
45
+ "@cdktn/hcl2cdk": "0.22.0-pre.2",
46
+ "@cdktn/hcl2json": "0.22.0-pre.2",
47
+ "@cdktn/provider-schema": "0.22.0-pre.2",
48
+ "@sentry/node": "7.120.3",
49
+ "archiver": "7.0.1",
50
+ "cdktn": "0.22.0-pre.2",
51
+ "chalk": "4.1.2",
52
+ "chokidar": "3.6.0",
53
+ "cli-spinners": "2.9.2",
54
+ "codemaker": "1.112.0",
55
+ "constructs": "10.4.2",
56
+ "cross-fetch": "3.2.0",
57
+ "cross-spawn": "7.0.6",
58
+ "detect-port": "1.6.1",
59
+ "execa": "5.1.1",
60
+ "extract-zip": "2.0.1",
61
+ "follow-redirects": "1.15.9",
62
+ "fs-extra": "8.1.0",
63
+ "https-proxy-agent": "5.0.1",
64
+ "indent-string": "4.0.0",
65
+ "ink": "3.2.0",
66
+ "ink-select-input": "4.2.2",
67
+ "ink-spinner": "4.0.3",
68
+ "ink-testing-library": "2.1.0",
69
+ "ink-use-stdout-dimensions": "1.0.5",
70
+ "jsii": "^5.8.9",
71
+ "jsii-pacmak": "^1.112.0",
72
+ "jsii-rosetta": "^5.8.8",
73
+ "lodash.isequal": "4.5.0",
74
+ "log4js": "6.9.1",
75
+ "minimatch": "5.1.6",
76
+ "node-fetch": "2.7.0",
77
+ "open": "7.4.2",
78
+ "parse-gitignore": "1.0.1",
79
+ "pkg-up": "3.1.0",
80
+ "semver": "7.7.2",
81
+ "sscaff": "1.2.274",
82
+ "stream-buffers": "3.0.3",
83
+ "strip-ansi": "6.0.1",
84
+ "tunnel-agent": "0.6.0",
85
+ "uuid": "8.3.2",
86
+ "xml-js": "1.6.11",
87
+ "xstate": "4.38.3",
88
+ "yargs": "17.7.2",
89
+ "yoga-layout-prebuilt": "1.10.0",
90
+ "zod": "3.24.4"
91
+ },
92
+ "lint-staged": {
93
+ "src/**/*.{ts,tsx}": "tsc-files ambient.d.ts --noEmit"
94
+ },
95
+ "devDependencies": {
96
+ "@cdktn/provider-generator": "0.22.0-pre.2",
97
+ "@eslint/compat": "^1.2.9",
98
+ "@eslint/eslintrc": "^3.3.1",
99
+ "@eslint/js": "^9.27.0",
100
+ "@npmcli/ci-detect": "1.4.0",
101
+ "@skorfmann/ink-confirm-input": "3.0.0",
102
+ "@skorfmann/terraform-cloud": "1.15.0",
103
+ "@types/archiver": "5.3.4",
104
+ "@types/cross-spawn": "6.0.6",
105
+ "@types/detect-port": "1.3.5",
106
+ "@types/follow-redirects": "1.14.4",
107
+ "@types/fs-extra": "8.1.5",
108
+ "@types/ink": "2.0.3",
109
+ "@types/ink-spinner": "3.0.4",
110
+ "@types/jest": "29.5.14",
111
+ "@types/json-schema": "7.0.15",
112
+ "@types/lodash.isequal": "4.5.8",
113
+ "@types/nock": "11.1.0",
114
+ "@types/node": "20.17.51",
115
+ "@types/node-fetch": "2.6.12",
116
+ "@types/parse-gitignore": "1.0.2",
117
+ "@types/react": "18.3.21",
118
+ "@types/scheduler": "^0.26.0",
119
+ "@types/semver": "7.7.0",
120
+ "@types/stream-buffers": "3.0.7",
121
+ "@types/uuid": "8.3.4",
122
+ "esbuild": "^0.25.4",
123
+ "esbuild-jest": "0.5.0",
124
+ "eslint": "^9.27.0",
125
+ "eslint-config-prettier": "^10.1.5",
126
+ "eslint-plugin-prettier": "^5.4.0",
127
+ "eslint-plugin-react": "7.37.5",
128
+ "eslint-plugin-react-hooks": "^5.2.0",
129
+ "jest": "^29.7.0",
130
+ "nock": "13.5.6",
131
+ "prettier": "2.8.8",
132
+ "react": "18.3.1",
133
+ "ts-jest": "29.3.4",
134
+ "tsc-files": "1.1.4",
135
+ "typescript": "5.4.5",
136
+ "typescript-eslint": "^8.32.1",
137
+ "utility-types": "3.11.0"
138
+ }
139
+ }
@@ -0,0 +1,16 @@
1
+ import { Language, TerraformDependencyConstraint } from "@cdktn/commons";
2
+ export declare class CdktfConfig {
3
+ private cdktfConfigPath;
4
+ constructor(cdktfConfigPath: string);
5
+ private readCdktfConfig;
6
+ private writeCdktfConfig;
7
+ private getProperty;
8
+ get language(): Language;
9
+ get codeMakerOutput(): string;
10
+ get terraformProviders(): (TerraformDependencyConstraint | string)[];
11
+ get terraformModules(): (TerraformDependencyConstraint | string)[];
12
+ writeTerraformProviders(providers: (TerraformDependencyConstraint | string)[]): void;
13
+ get projectDirectory(): string;
14
+ static read(path?: string): CdktfConfig;
15
+ }
16
+ //# sourceMappingURL=cdktf-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdktf-config.d.ts","sourceRoot":"","sources":["cdktf-config.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EAGR,6BAA6B,EAC9B,MAAM,gBAAgB,CAAC;AAuBxB,qBAAa,WAAW;IACV,OAAO,CAAC,eAAe;gBAAf,eAAe,EAAE,MAAM;IAE3C,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,WAAW;IAKnB,IAAW,QAAQ,IAAI,QAAQ,CAa9B;IAED,IAAW,eAAe,IAAI,MAAM,CAEnC;IAED,IAAW,kBAAkB,IAAI,CAAC,6BAA6B,GAAG,MAAM,CAAC,EAAE,CAI1E;IAED,IAAW,gBAAgB,IAAI,CAAC,6BAA6B,GAAG,MAAM,CAAC,EAAE,CAIxE;IAEM,uBAAuB,CAC5B,SAAS,EAAE,CAAC,6BAA6B,GAAG,MAAM,CAAC,EAAE;IAOvD,IAAW,gBAAgB,IAAI,MAAM,CAEpC;WAEa,IAAI,CAAC,IAAI,GAAE,MAAsB,GAAG,WAAW;CAW9D"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.CdktfConfig = void 0;
30
+ // Copyright (c) HashiCorp, Inc
31
+ // SPDX-License-Identifier: MPL-2.0
32
+ const fs = __importStar(require("fs"));
33
+ const commons_1 = require("@cdktn/commons");
34
+ const path_1 = __importDefault(require("path"));
35
+ const commons_2 = require("@cdktn/commons");
36
+ function findFileAboveCwd(file, rootPath = process.cwd()) {
37
+ const fullPath = path_1.default.resolve(rootPath, file);
38
+ if (fs.existsSync(fullPath)) {
39
+ return fullPath;
40
+ }
41
+ const parentDir = path_1.default.resolve(rootPath, "..");
42
+ if (fs.existsSync(parentDir) && parentDir !== rootPath) {
43
+ return findFileAboveCwd(file, parentDir);
44
+ }
45
+ return null;
46
+ }
47
+ // TODO: move this to @cdktn/commons
48
+ // tracked here https://github.com/hashicorp/terraform-cdk/issues/1814
49
+ class CdktfConfig {
50
+ constructor(cdktfConfigPath) {
51
+ this.cdktfConfigPath = cdktfConfigPath;
52
+ }
53
+ readCdktfConfig() {
54
+ const cdktfConfig = require(this.cdktfConfigPath);
55
+ if (typeof cdktfConfig !== "object" || cdktfConfig === null) {
56
+ throw commons_1.Errors.External("cdktf.json is malformed. The root must be a JSON object."); // TODO: define a schema and validate against it
57
+ }
58
+ return cdktfConfig;
59
+ }
60
+ writeCdktfConfig(cdktfConfig) {
61
+ const cdktfConfigString = JSON.stringify(cdktfConfig, null, 2);
62
+ fs.writeFileSync(this.cdktfConfigPath, cdktfConfigString);
63
+ }
64
+ getProperty(property) {
65
+ const cdktfConfig = this.readCdktfConfig();
66
+ return cdktfConfig[property] || commons_1.CONFIG_DEFAULTS[property];
67
+ }
68
+ get language() {
69
+ const rawLanguage = this.getProperty("language");
70
+ const language = Object.values(commons_1.Language).find((value) => value === rawLanguage);
71
+ if (!language)
72
+ throw commons_1.Errors.Usage(`${rawLanguage} is not a valid language. It must be one of ${Object.values(commons_1.Language)}`);
73
+ return language;
74
+ }
75
+ get codeMakerOutput() {
76
+ return this.getProperty("codeMakerOutput");
77
+ }
78
+ get terraformProviders() {
79
+ const providers = this.getProperty("terraformProviders");
80
+ if (!Array.isArray(providers))
81
+ return [];
82
+ return providers;
83
+ }
84
+ get terraformModules() {
85
+ const modules = this.getProperty("terraformModules");
86
+ if (!Array.isArray(modules))
87
+ return [];
88
+ return modules;
89
+ }
90
+ writeTerraformProviders(providers) {
91
+ const cdktfConfig = this.readCdktfConfig();
92
+ cdktfConfig.terraformProviders = providers;
93
+ this.writeCdktfConfig(cdktfConfig);
94
+ }
95
+ get projectDirectory() {
96
+ return path_1.default.dirname(this.cdktfConfigPath);
97
+ }
98
+ static read(path = process.cwd()) {
99
+ const cdktfConfigPath = findFileAboveCwd("cdktf.json", path);
100
+ if (!cdktfConfigPath) {
101
+ throw commons_1.Errors.External("Could not find cdktf.json. Make sure there is a cdktf.json file in the current directory or one of its parents.");
102
+ }
103
+ commons_2.logger.trace(`cdktf.json found at ${cdktfConfigPath}`);
104
+ return new CdktfConfig(cdktfConfigPath);
105
+ }
106
+ }
107
+ exports.CdktfConfig = CdktfConfig;
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrdGYtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrdGYtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyx1Q0FBeUI7QUFDekIsNENBS3dCO0FBQ3hCLGdEQUF3QjtBQUN4Qiw0Q0FBd0M7QUFFeEMsU0FBUyxnQkFBZ0IsQ0FDdkIsSUFBWSxFQUNaLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO0lBRXhCLE1BQU0sUUFBUSxHQUFHLGNBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzVCLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxjQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3ZELE9BQU8sZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxvQ0FBb0M7QUFDcEMsc0VBQXNFO0FBQ3RFLE1BQWEsV0FBVztJQUN0QixZQUFvQixlQUF1QjtRQUF2QixvQkFBZSxHQUFmLGVBQWUsQ0FBUTtJQUFHLENBQUM7SUFFdkMsZUFBZTtRQUNyQixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM1RCxNQUFNLGdCQUFNLENBQUMsUUFBUSxDQUNuQiwwREFBMEQsQ0FDM0QsQ0FBQyxDQUFDLGdEQUFnRDtRQUNyRCxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFdBQW9DO1FBQzNELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9ELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTyxXQUFXLENBQUMsUUFBZ0I7UUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNDLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFLLHlCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFRLENBQUMsQ0FBQyxJQUFJLENBQzNDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUNqQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVE7WUFDWCxNQUFNLGdCQUFNLENBQUMsS0FBSyxDQUNoQixHQUFHLFdBQVcsK0NBQStDLE1BQU0sQ0FBQyxNQUFNLENBQ3hFLGtCQUFRLENBQ1QsRUFBRSxDQUNKLENBQUM7UUFFSixPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsSUFBVyxlQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBVyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDekMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQVcsZ0JBQWdCO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN2QyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU0sdUJBQXVCLENBQzVCLFNBQXFEO1FBRXJELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQyxXQUFXLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxjQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFlLE9BQU8sQ0FBQyxHQUFHLEVBQUU7UUFDN0MsTUFBTSxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixNQUFNLGdCQUFNLENBQUMsUUFBUSxDQUNuQixpSEFBaUgsQ0FDbEgsQ0FBQztRQUNKLENBQUM7UUFDRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUV2RCxPQUFPLElBQUksV0FBVyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQTdFRCxrQ0E2RUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQge1xuICBMYW5ndWFnZSxcbiAgRXJyb3JzLFxuICBDT05GSUdfREVGQVVMVFMsXG4gIFRlcnJhZm9ybURlcGVuZGVuY3lDb25zdHJhaW50LFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcblxuZnVuY3Rpb24gZmluZEZpbGVBYm92ZUN3ZChcbiAgZmlsZTogc3RyaW5nLFxuICByb290UGF0aCA9IHByb2Nlc3MuY3dkKCksXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgZnVsbFBhdGggPSBwYXRoLnJlc29sdmUocm9vdFBhdGgsIGZpbGUpO1xuICBpZiAoZnMuZXhpc3RzU3luYyhmdWxsUGF0aCkpIHtcbiAgICByZXR1cm4gZnVsbFBhdGg7XG4gIH1cblxuICBjb25zdCBwYXJlbnREaXIgPSBwYXRoLnJlc29sdmUocm9vdFBhdGgsIFwiLi5cIik7XG4gIGlmIChmcy5leGlzdHNTeW5jKHBhcmVudERpcikgJiYgcGFyZW50RGlyICE9PSByb290UGF0aCkge1xuICAgIHJldHVybiBmaW5kRmlsZUFib3ZlQ3dkKGZpbGUsIHBhcmVudERpcik7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gVE9ETzogbW92ZSB0aGlzIHRvIEBjZGt0bi9jb21tb25zXG4vLyB0cmFja2VkIGhlcmUgaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2lzc3Vlcy8xODE0XG5leHBvcnQgY2xhc3MgQ2RrdGZDb25maWcge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNka3RmQ29uZmlnUGF0aDogc3RyaW5nKSB7fVxuXG4gIHByaXZhdGUgcmVhZENka3RmQ29uZmlnKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBjZGt0ZkNvbmZpZyA9IHJlcXVpcmUodGhpcy5jZGt0ZkNvbmZpZ1BhdGgpO1xuICAgIGlmICh0eXBlb2YgY2RrdGZDb25maWcgIT09IFwib2JqZWN0XCIgfHwgY2RrdGZDb25maWcgPT09IG51bGwpIHtcbiAgICAgIHRocm93IEVycm9ycy5FeHRlcm5hbChcbiAgICAgICAgXCJjZGt0Zi5qc29uIGlzIG1hbGZvcm1lZC4gVGhlIHJvb3QgbXVzdCBiZSBhIEpTT04gb2JqZWN0LlwiLFxuICAgICAgKTsgLy8gVE9ETzogZGVmaW5lIGEgc2NoZW1hIGFuZCB2YWxpZGF0ZSBhZ2FpbnN0IGl0XG4gICAgfVxuICAgIHJldHVybiBjZGt0ZkNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgd3JpdGVDZGt0ZkNvbmZpZyhjZGt0ZkNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBjb25zdCBjZGt0ZkNvbmZpZ1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNka3RmQ29uZmlnLCBudWxsLCAyKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuY2RrdGZDb25maWdQYXRoLCBjZGt0ZkNvbmZpZ1N0cmluZyk7XG4gIH1cblxuICBwcml2YXRlIGdldFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBjb25zdCBjZGt0ZkNvbmZpZyA9IHRoaXMucmVhZENka3RmQ29uZmlnKCk7XG4gICAgcmV0dXJuIGNka3RmQ29uZmlnW3Byb3BlcnR5XSB8fCAoQ09ORklHX0RFRkFVTFRTIGFzIGFueSlbcHJvcGVydHldO1xuICB9XG5cbiAgcHVibGljIGdldCBsYW5ndWFnZSgpOiBMYW5ndWFnZSB7XG4gICAgY29uc3QgcmF3TGFuZ3VhZ2UgPSB0aGlzLmdldFByb3BlcnR5KFwibGFuZ3VhZ2VcIik7XG4gICAgY29uc3QgbGFuZ3VhZ2UgPSBPYmplY3QudmFsdWVzKExhbmd1YWdlKS5maW5kKFxuICAgICAgKHZhbHVlKSA9PiB2YWx1ZSA9PT0gcmF3TGFuZ3VhZ2UsXG4gICAgKTtcbiAgICBpZiAoIWxhbmd1YWdlKVxuICAgICAgdGhyb3cgRXJyb3JzLlVzYWdlKFxuICAgICAgICBgJHtyYXdMYW5ndWFnZX0gaXMgbm90IGEgdmFsaWQgbGFuZ3VhZ2UuIEl0IG11c3QgYmUgb25lIG9mICR7T2JqZWN0LnZhbHVlcyhcbiAgICAgICAgICBMYW5ndWFnZSxcbiAgICAgICAgKX1gLFxuICAgICAgKTtcblxuICAgIHJldHVybiBsYW5ndWFnZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29kZU1ha2VyT3V0cHV0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJvcGVydHkoXCJjb2RlTWFrZXJPdXRwdXRcIikgYXMgc3RyaW5nO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZXJyYWZvcm1Qcm92aWRlcnMoKTogKFRlcnJhZm9ybURlcGVuZGVuY3lDb25zdHJhaW50IHwgc3RyaW5nKVtdIHtcbiAgICBjb25zdCBwcm92aWRlcnMgPSB0aGlzLmdldFByb3BlcnR5KFwidGVycmFmb3JtUHJvdmlkZXJzXCIpO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShwcm92aWRlcnMpKSByZXR1cm4gW107XG4gICAgcmV0dXJuIHByb3ZpZGVycztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGVycmFmb3JtTW9kdWxlcygpOiAoVGVycmFmb3JtRGVwZW5kZW5jeUNvbnN0cmFpbnQgfCBzdHJpbmcpW10ge1xuICAgIGNvbnN0IG1vZHVsZXMgPSB0aGlzLmdldFByb3BlcnR5KFwidGVycmFmb3JtTW9kdWxlc1wiKTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobW9kdWxlcykpIHJldHVybiBbXTtcbiAgICByZXR1cm4gbW9kdWxlcztcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVRlcnJhZm9ybVByb3ZpZGVycyhcbiAgICBwcm92aWRlcnM6IChUZXJyYWZvcm1EZXBlbmRlbmN5Q29uc3RyYWludCB8IHN0cmluZylbXSxcbiAgKSB7XG4gICAgY29uc3QgY2RrdGZDb25maWcgPSB0aGlzLnJlYWRDZGt0ZkNvbmZpZygpO1xuICAgIGNka3RmQ29uZmlnLnRlcnJhZm9ybVByb3ZpZGVycyA9IHByb3ZpZGVycztcbiAgICB0aGlzLndyaXRlQ2RrdGZDb25maWcoY2RrdGZDb25maWcpO1xuICB9XG5cbiAgcHVibGljIGdldCBwcm9qZWN0RGlyZWN0b3J5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHBhdGguZGlybmFtZSh0aGlzLmNka3RmQ29uZmlnUGF0aCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHJlYWQocGF0aDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKSk6IENka3RmQ29uZmlnIHtcbiAgICBjb25zdCBjZGt0ZkNvbmZpZ1BhdGggPSBmaW5kRmlsZUFib3ZlQ3dkKFwiY2RrdGYuanNvblwiLCBwYXRoKTtcbiAgICBpZiAoIWNka3RmQ29uZmlnUGF0aCkge1xuICAgICAgdGhyb3cgRXJyb3JzLkV4dGVybmFsKFxuICAgICAgICBcIkNvdWxkIG5vdCBmaW5kIGNka3RmLmpzb24uIE1ha2Ugc3VyZSB0aGVyZSBpcyBhIGNka3RmLmpzb24gZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkgb3Igb25lIG9mIGl0cyBwYXJlbnRzLlwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgbG9nZ2VyLnRyYWNlKGBjZGt0Zi5qc29uIGZvdW5kIGF0ICR7Y2RrdGZDb25maWdQYXRofWApO1xuXG4gICAgcmV0dXJuIG5ldyBDZGt0ZkNvbmZpZyhjZGt0ZkNvbmZpZ1BhdGgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import { ProjectEvent, LogMessage } from "./cdktf-project";
6
+ /**
7
+ * This class is used to buffer events while the user is being asked for input. It is solely consumed by the CdktfProject class,
8
+ * and is mostly created as a separation of concerns to keep the CdktfProject class as clean as possible.
9
+ */
10
+ export declare class CdktfProjectIOHandler {
11
+ private waitingForUserInput;
12
+ private eventBuffer;
13
+ awaitUserInput(): void;
14
+ filterUserInputEventsFromBuffer(): void;
15
+ resumeAfterUserInput(stackName: string): void;
16
+ isWaitingForUserInput(): boolean;
17
+ pushEvent(event: ProjectEvent): void;
18
+ bufferWhileAwaitingUserInput(cb?: (msg: LogMessage) => void): ((msg: LogMessage) => void) | undefined;
19
+ }
20
+ //# sourceMappingURL=cdktf-project-io-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdktf-project-io-handler.d.ts","sourceRoot":"","sources":["cdktf-project-io-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,YAAY,EAGZ,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB;;;GAGG;AACH,qBAAa,qBAAqB;IAIhC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,WAAW,CAA2B;IAEvC,cAAc;IAId,+BAA+B;IAS/B,oBAAoB,CAAC,SAAS,EAAE,MAAM;IA0CtC,qBAAqB;IAIrB,SAAS,CAAC,KAAK,EAAE,YAAY;IAI7B,4BAA4B,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,UAKnD,UAAU;CAY1B"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) HashiCorp, Inc.
4
+ * SPDX-License-Identifier: MPL-2.0
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CdktfProjectIOHandler = void 0;
8
+ const cdktf_project_1 = require("./cdktf-project");
9
+ /**
10
+ * This class is used to buffer events while the user is being asked for input. It is solely consumed by the CdktfProject class,
11
+ * and is mostly created as a separation of concerns to keep the CdktfProject class as clean as possible.
12
+ */
13
+ class CdktfProjectIOHandler {
14
+ constructor() {
15
+ // Pauses all progress / status events from being forwarded to the user
16
+ // If set from true to false, the events will be sent through the channels they came in
17
+ // (until a waiting for approval event is sent)
18
+ this.waitingForUserInput = false;
19
+ this.eventBuffer = [];
20
+ }
21
+ awaitUserInput() {
22
+ this.waitingForUserInput = true;
23
+ }
24
+ filterUserInputEventsFromBuffer() {
25
+ this.eventBuffer = this.eventBuffer.filter((event) => event.type === "projectUpdate"
26
+ ? !(0, cdktf_project_1.isWaitingForUserInputUpdate)(event.value) // we want to filter out the waiting for approval events
27
+ : true);
28
+ }
29
+ resumeAfterUserInput(stackName) {
30
+ // remove waiting for approval event that should be resumed
31
+ this.eventBuffer = this.eventBuffer.filter((event) => !(event.type === "projectUpdate" &&
32
+ (0, cdktf_project_1.isWaitingForUserInputUpdate)(event.value) &&
33
+ event.value.stackName === stackName));
34
+ if (this.eventBuffer.length &&
35
+ this.eventBuffer[0].type === "projectUpdate" &&
36
+ (0, cdktf_project_1.isWaitingForUserInputUpdate)(this.eventBuffer[0].value)) {
37
+ // we are still waiting on approval for the current stack
38
+ // we removed a future "waiting for approval" event for some other stack
39
+ return;
40
+ }
41
+ // We first need to flush all events, we can not resume if there is a new waiting for approval update
42
+ let event = this.eventBuffer.shift();
43
+ while (event) {
44
+ if (event.type === "projectUpdate") {
45
+ event.cb(event.value);
46
+ if ((0, cdktf_project_1.isWaitingForUserInputUpdate)(event.value)) {
47
+ // We have to wait for user input again, therefore we can not resume
48
+ return;
49
+ }
50
+ }
51
+ if (event.type === "logMessage") {
52
+ event.cb(event.value);
53
+ }
54
+ event = this.eventBuffer.shift();
55
+ }
56
+ // If we reach this point there was no waiting for user input event, so we can safely resume
57
+ this.waitingForUserInput = false;
58
+ }
59
+ isWaitingForUserInput() {
60
+ return this.waitingForUserInput;
61
+ }
62
+ pushEvent(event) {
63
+ this.eventBuffer.push(event);
64
+ }
65
+ bufferWhileAwaitingUserInput(cb) {
66
+ if (!cb) {
67
+ return undefined;
68
+ }
69
+ return (msg) => {
70
+ if (this.waitingForUserInput) {
71
+ this.eventBuffer.push({
72
+ cb,
73
+ value: msg,
74
+ type: "logMessage",
75
+ });
76
+ }
77
+ else {
78
+ cb(msg);
79
+ }
80
+ };
81
+ }
82
+ }
83
+ exports.CdktfProjectIOHandler = CdktfProjectIOHandler;
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrdGYtcHJvamVjdC1pby1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrdGYtcHJvamVjdC1pby1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILG1EQUt5QjtBQUV6Qjs7O0dBR0c7QUFDSCxNQUFhLHFCQUFxQjtJQUFsQztRQUNFLHVFQUF1RTtRQUN2RSx1RkFBdUY7UUFDdkYsK0NBQStDO1FBQ3ZDLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QixnQkFBVyxHQUF3QixFQUFFLENBQUM7SUFrRmhELENBQUM7SUFoRlEsY0FBYztRQUNuQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFTSwrQkFBK0I7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FDeEMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLEtBQUssQ0FBQyxJQUFJLEtBQUssZUFBZTtZQUM1QixDQUFDLENBQUMsQ0FBQyxJQUFBLDJDQUEyQixFQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyx3REFBd0Q7WUFDcEcsQ0FBQyxDQUFDLElBQUksQ0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVNLG9CQUFvQixDQUFDLFNBQWlCO1FBQzNDLDJEQUEyRDtRQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUN4QyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1IsQ0FBQyxDQUNDLEtBQUssQ0FBQyxJQUFJLEtBQUssZUFBZTtZQUM5QixJQUFBLDJDQUEyQixFQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDdkMsS0FBSyxDQUFDLEtBQTBCLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FDMUQsQ0FDSixDQUFDO1FBRUYsSUFDRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU07WUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssZUFBZTtZQUM1QyxJQUFBLDJDQUEyQixFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQ3RELENBQUM7WUFDRCx5REFBeUQ7WUFDekQsd0VBQXdFO1lBQ3hFLE9BQU87UUFDVCxDQUFDO1FBRUQscUdBQXFHO1FBQ3JHLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxlQUFlLEVBQUUsQ0FBQztnQkFDbkMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksSUFBQSwyQ0FBMkIsRUFBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDN0Msb0VBQW9FO29CQUNwRSxPQUFPO2dCQUNULENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFlBQVksRUFBRSxDQUFDO2dCQUNoQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixDQUFDO1lBRUQsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsQ0FBQztRQUVELDRGQUE0RjtRQUM1RixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFFTSxxQkFBcUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFtQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sNEJBQTRCLENBQUMsRUFBOEI7UUFDaEUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFlLEVBQUUsRUFBRTtZQUN6QixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztvQkFDcEIsRUFBRTtvQkFDRixLQUFLLEVBQUUsR0FBRztvQkFDVixJQUFJLEVBQUUsWUFBWTtpQkFDbkIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNWLENBQUM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF2RkQsc0RBdUZDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG5pbXBvcnQge1xuICBQcm9qZWN0RXZlbnQsXG4gIGlzV2FpdGluZ0ZvclVzZXJJbnB1dFVwZGF0ZSxcbiAgTXVsdGlTdGFja1VwZGF0ZSxcbiAgTG9nTWVzc2FnZSxcbn0gZnJvbSBcIi4vY2RrdGYtcHJvamVjdFwiO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBidWZmZXIgZXZlbnRzIHdoaWxlIHRoZSB1c2VyIGlzIGJlaW5nIGFza2VkIGZvciBpbnB1dC4gSXQgaXMgc29sZWx5IGNvbnN1bWVkIGJ5IHRoZSBDZGt0ZlByb2plY3QgY2xhc3MsXG4gKiBhbmQgaXMgbW9zdGx5IGNyZWF0ZWQgYXMgYSBzZXBhcmF0aW9uIG9mIGNvbmNlcm5zIHRvIGtlZXAgdGhlIENka3RmUHJvamVjdCBjbGFzcyBhcyBjbGVhbiBhcyBwb3NzaWJsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIENka3RmUHJvamVjdElPSGFuZGxlciB7XG4gIC8vIFBhdXNlcyBhbGwgcHJvZ3Jlc3MgLyBzdGF0dXMgZXZlbnRzIGZyb20gYmVpbmcgZm9yd2FyZGVkIHRvIHRoZSB1c2VyXG4gIC8vIElmIHNldCBmcm9tIHRydWUgdG8gZmFsc2UsIHRoZSBldmVudHMgd2lsbCBiZSBzZW50IHRocm91Z2ggdGhlIGNoYW5uZWxzIHRoZXkgY2FtZSBpblxuICAvLyAodW50aWwgYSB3YWl0aW5nIGZvciBhcHByb3ZhbCBldmVudCBpcyBzZW50KVxuICBwcml2YXRlIHdhaXRpbmdGb3JVc2VySW5wdXQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBldmVudEJ1ZmZlcjogQXJyYXk8UHJvamVjdEV2ZW50PiA9IFtdO1xuXG4gIHB1YmxpYyBhd2FpdFVzZXJJbnB1dCgpIHtcbiAgICB0aGlzLndhaXRpbmdGb3JVc2VySW5wdXQgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIGZpbHRlclVzZXJJbnB1dEV2ZW50c0Zyb21CdWZmZXIoKSB7XG4gICAgdGhpcy5ldmVudEJ1ZmZlciA9IHRoaXMuZXZlbnRCdWZmZXIuZmlsdGVyKFxuICAgICAgKGV2ZW50KSA9PlxuICAgICAgICBldmVudC50eXBlID09PSBcInByb2plY3RVcGRhdGVcIlxuICAgICAgICAgID8gIWlzV2FpdGluZ0ZvclVzZXJJbnB1dFVwZGF0ZShldmVudC52YWx1ZSkgLy8gd2Ugd2FudCB0byBmaWx0ZXIgb3V0IHRoZSB3YWl0aW5nIGZvciBhcHByb3ZhbCBldmVudHNcbiAgICAgICAgICA6IHRydWUsIC8vIHdlIHdhbnQgYWxsIG90aGVyIHR5cGVzXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZXN1bWVBZnRlclVzZXJJbnB1dChzdGFja05hbWU6IHN0cmluZykge1xuICAgIC8vIHJlbW92ZSB3YWl0aW5nIGZvciBhcHByb3ZhbCBldmVudCB0aGF0IHNob3VsZCBiZSByZXN1bWVkXG4gICAgdGhpcy5ldmVudEJ1ZmZlciA9IHRoaXMuZXZlbnRCdWZmZXIuZmlsdGVyKFxuICAgICAgKGV2ZW50KSA9PlxuICAgICAgICAhKFxuICAgICAgICAgIGV2ZW50LnR5cGUgPT09IFwicHJvamVjdFVwZGF0ZVwiICYmXG4gICAgICAgICAgaXNXYWl0aW5nRm9yVXNlcklucHV0VXBkYXRlKGV2ZW50LnZhbHVlKSAmJlxuICAgICAgICAgIChldmVudC52YWx1ZSBhcyBNdWx0aVN0YWNrVXBkYXRlKS5zdGFja05hbWUgPT09IHN0YWNrTmFtZVxuICAgICAgICApLFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmV2ZW50QnVmZmVyLmxlbmd0aCAmJlxuICAgICAgdGhpcy5ldmVudEJ1ZmZlclswXS50eXBlID09PSBcInByb2plY3RVcGRhdGVcIiAmJlxuICAgICAgaXNXYWl0aW5nRm9yVXNlcklucHV0VXBkYXRlKHRoaXMuZXZlbnRCdWZmZXJbMF0udmFsdWUpXG4gICAgKSB7XG4gICAgICAvLyB3ZSBhcmUgc3RpbGwgd2FpdGluZyBvbiBhcHByb3ZhbCBmb3IgdGhlIGN1cnJlbnQgc3RhY2tcbiAgICAgIC8vIHdlIHJlbW92ZWQgYSBmdXR1cmUgXCJ3YWl0aW5nIGZvciBhcHByb3ZhbFwiIGV2ZW50IGZvciBzb21lIG90aGVyIHN0YWNrXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gV2UgZmlyc3QgbmVlZCB0byBmbHVzaCBhbGwgZXZlbnRzLCB3ZSBjYW4gbm90IHJlc3VtZSBpZiB0aGVyZSBpcyBhIG5ldyB3YWl0aW5nIGZvciBhcHByb3ZhbCB1cGRhdGVcbiAgICBsZXQgZXZlbnQgPSB0aGlzLmV2ZW50QnVmZmVyLnNoaWZ0KCk7XG4gICAgd2hpbGUgKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gXCJwcm9qZWN0VXBkYXRlXCIpIHtcbiAgICAgICAgZXZlbnQuY2IoZXZlbnQudmFsdWUpO1xuICAgICAgICBpZiAoaXNXYWl0aW5nRm9yVXNlcklucHV0VXBkYXRlKGV2ZW50LnZhbHVlKSkge1xuICAgICAgICAgIC8vIFdlIGhhdmUgdG8gd2FpdCBmb3IgdXNlciBpbnB1dCBhZ2FpbiwgdGhlcmVmb3JlIHdlIGNhbiBub3QgcmVzdW1lXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQudHlwZSA9PT0gXCJsb2dNZXNzYWdlXCIpIHtcbiAgICAgICAgZXZlbnQuY2IoZXZlbnQudmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBldmVudCA9IHRoaXMuZXZlbnRCdWZmZXIuc2hpZnQoKTtcbiAgICB9XG5cbiAgICAvLyBJZiB3ZSByZWFjaCB0aGlzIHBvaW50IHRoZXJlIHdhcyBubyB3YWl0aW5nIGZvciB1c2VyIGlucHV0IGV2ZW50LCBzbyB3ZSBjYW4gc2FmZWx5IHJlc3VtZVxuICAgIHRoaXMud2FpdGluZ0ZvclVzZXJJbnB1dCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGlzV2FpdGluZ0ZvclVzZXJJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy53YWl0aW5nRm9yVXNlcklucHV0O1xuICB9XG5cbiAgcHVibGljIHB1c2hFdmVudChldmVudDogUHJvamVjdEV2ZW50KSB7XG4gICAgdGhpcy5ldmVudEJ1ZmZlci5wdXNoKGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBidWZmZXJXaGlsZUF3YWl0aW5nVXNlcklucHV0KGNiPzogKG1zZzogTG9nTWVzc2FnZSkgPT4gdm9pZCkge1xuICAgIGlmICghY2IpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIChtc2c6IExvZ01lc3NhZ2UpID0+IHtcbiAgICAgIGlmICh0aGlzLndhaXRpbmdGb3JVc2VySW5wdXQpIHtcbiAgICAgICAgdGhpcy5ldmVudEJ1ZmZlci5wdXNoKHtcbiAgICAgICAgICBjYixcbiAgICAgICAgICB2YWx1ZTogbXNnLFxuICAgICAgICAgIHR5cGU6IFwibG9nTWVzc2FnZVwiLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNiKG1zZyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuIl19
@@ -0,0 +1,111 @@
1
+ import { SynthesizedStack, SynthOrigin } from "./synth-stack";
2
+ import { CdktfStack, StackUpdate } from "./cdktf-stack";
3
+ import { NestedTerraformOutputs } from "./output";
4
+ type MultiStackApprovalUpdate = {
5
+ type: "waiting for approval";
6
+ stackName: string;
7
+ approve: () => void;
8
+ dismiss: () => void;
9
+ stop: () => void;
10
+ };
11
+ type MultiStackSentinelOverrideUpdate = {
12
+ type: "waiting for sentinel override";
13
+ stackName: string;
14
+ override: () => void;
15
+ reject: () => void;
16
+ };
17
+ export type MultiStackUpdate = MultiStackApprovalUpdate | MultiStackSentinelOverrideUpdate;
18
+ export type ProjectUpdate = {
19
+ type: "synthesizing";
20
+ } | {
21
+ type: "synthesized";
22
+ stacks: SynthesizedStack[];
23
+ errorMessage?: string;
24
+ } | StackUpdate | MultiStackUpdate;
25
+ export type SingleStackOptions = {
26
+ stackName?: string;
27
+ };
28
+ export type MultipleStackOptions = {
29
+ stackNames?: string[];
30
+ };
31
+ export type SkipSynthOptions = {
32
+ skipSynth?: boolean;
33
+ };
34
+ export type SkipProviderLockOptions = {
35
+ skipProviderLock?: boolean;
36
+ };
37
+ export type FetchOutputOptions = SkipSynthOptions & SkipProviderLockOptions & MultipleStackOptions;
38
+ export type AutoApproveOptions = {
39
+ autoApprove?: boolean;
40
+ };
41
+ export type DiffOptions = SingleStackOptions & SkipProviderLockOptions & SkipSynthOptions & {
42
+ refreshOnly?: boolean;
43
+ terraformParallelism?: number;
44
+ vars?: string[];
45
+ varFiles?: string[];
46
+ noColor?: boolean;
47
+ migrateState?: boolean;
48
+ };
49
+ export type MutationOptions = MultipleStackOptions & SkipProviderLockOptions & SkipSynthOptions & AutoApproveOptions & {
50
+ refreshOnly?: boolean;
51
+ ignoreMissingStackDependencies?: boolean;
52
+ parallelism?: number;
53
+ terraformParallelism?: number;
54
+ vars?: string[];
55
+ varFiles?: string[];
56
+ noColor?: boolean;
57
+ migrateState?: boolean;
58
+ };
59
+ export type LogMessage = {
60
+ stackName: string;
61
+ messageWithConstructPath?: string;
62
+ message: string;
63
+ };
64
+ type Buffered<T, V> = {
65
+ cb: (item: T) => void;
66
+ value: T;
67
+ type: V;
68
+ };
69
+ export declare function isWaitingForUserInputUpdate(update: ProjectUpdate | StackUpdate): boolean;
70
+ export type ProjectEvent = Buffered<ProjectUpdate, "projectUpdate"> | Buffered<LogMessage, "logMessage">;
71
+ export type CdktfProjectOptions = {
72
+ synthCommand: string;
73
+ outDir: string;
74
+ onUpdate: (update: ProjectUpdate) => void;
75
+ onLog?: (log: LogMessage) => void;
76
+ workingDirectory?: string;
77
+ synthOrigin?: SynthOrigin;
78
+ hcl?: boolean;
79
+ };
80
+ export declare class CdktfProject {
81
+ stacks?: SynthesizedStack[];
82
+ hardAbort: () => void;
83
+ private synthCommand;
84
+ private outDir;
85
+ private workingDirectory;
86
+ private onUpdate;
87
+ private onLog?;
88
+ private abortSignal;
89
+ private synthOrigin?;
90
+ private hcl?;
91
+ stacksToRun: CdktfStack[];
92
+ private stopAllStacksThatCanNotRunWithout;
93
+ private ioHandler;
94
+ constructor({ synthCommand, outDir, onUpdate, onLog, workingDirectory, synthOrigin, hcl, }: CdktfProjectOptions);
95
+ private stopAllStacks;
96
+ private handleUserUpdate;
97
+ private handleUserInputProcess;
98
+ getStackExecutor(stack: SynthesizedStack, opts?: AutoApproveOptions): CdktfStack;
99
+ get outputsByConstructId(): NestedTerraformOutputs;
100
+ synth(noColor?: boolean): Promise<SynthesizedStack[]>;
101
+ readSynthesizedStacks(): Promise<SynthesizedStack[]>;
102
+ diff(opts?: DiffOptions): Promise<void>;
103
+ private execute;
104
+ deploy(opts?: MutationOptions): Promise<void>;
105
+ destroy(opts?: MutationOptions): Promise<void>;
106
+ projectTelemetry(command: string, payload: any): Promise<void>;
107
+ fetchOutputs(opts: FetchOutputOptions): Promise<NestedTerraformOutputs>;
108
+ private initializeStacksToRunInSerial;
109
+ }
110
+ export {};
111
+ //# sourceMappingURL=cdktf-project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdktf-project.d.ts","sourceRoot":"","sources":["cdktf-project.ts"],"names":[],"mappings":"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"}