@swovohq/fuel 0.2.0-alpha.8 → 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 (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +71 -19
  3. package/dist/bin/fuel.js +134 -44
  4. package/dist/bin/fuel.js.map +1 -1
  5. package/dist/commands/config-verify.d.ts +4 -0
  6. package/dist/commands/config-verify.d.ts.map +1 -0
  7. package/dist/commands/config-verify.js +66 -0
  8. package/dist/commands/config-verify.js.map +1 -0
  9. package/dist/commands/create-app.d.ts +6 -1
  10. package/dist/commands/create-app.d.ts.map +1 -1
  11. package/dist/commands/create-app.js +66 -45
  12. package/dist/commands/create-app.js.map +1 -1
  13. package/dist/commands/infra-deploy.d.ts +5 -0
  14. package/dist/commands/infra-deploy.d.ts.map +1 -1
  15. package/dist/commands/infra-deploy.js +59 -15
  16. package/dist/commands/infra-deploy.js.map +1 -1
  17. package/dist/commands/infra-destroy.d.ts +2 -0
  18. package/dist/commands/infra-destroy.d.ts.map +1 -1
  19. package/dist/commands/infra-destroy.js +4 -6
  20. package/dist/commands/infra-destroy.js.map +1 -1
  21. package/dist/commands/infra-init.d.ts +1 -0
  22. package/dist/commands/infra-init.d.ts.map +1 -1
  23. package/dist/commands/infra-init.js +99 -14
  24. package/dist/commands/infra-init.js.map +1 -1
  25. package/dist/commands/migrate-init.d.ts.map +1 -1
  26. package/dist/commands/migrate-init.js +28 -12
  27. package/dist/commands/migrate-init.js.map +1 -1
  28. package/dist/engines/template-source.d.ts.map +1 -1
  29. package/dist/engines/template-source.js +14 -1
  30. package/dist/engines/template-source.js.map +1 -1
  31. package/dist/infra/config-loader.d.ts.map +1 -1
  32. package/dist/infra/config-loader.js +10 -2
  33. package/dist/infra/config-loader.js.map +1 -1
  34. package/dist/infra/config-writer.d.ts +2 -7
  35. package/dist/infra/config-writer.d.ts.map +1 -1
  36. package/dist/infra/config-writer.js +5 -11
  37. package/dist/infra/config-writer.js.map +1 -1
  38. package/dist/infra/credentials.d.ts +10 -2
  39. package/dist/infra/credentials.d.ts.map +1 -1
  40. package/dist/infra/credentials.js +44 -25
  41. package/dist/infra/credentials.js.map +1 -1
  42. package/dist/infra/git-client.d.ts +1 -1
  43. package/dist/infra/git-client.d.ts.map +1 -1
  44. package/dist/infra/git-client.js +8 -4
  45. package/dist/infra/git-client.js.map +1 -1
  46. package/dist/infra/orchestrator.d.ts +4 -1
  47. package/dist/infra/orchestrator.d.ts.map +1 -1
  48. package/dist/infra/orchestrator.js +38 -29
  49. package/dist/infra/orchestrator.js.map +1 -1
  50. package/dist/infra/port-utils.d.ts +4 -0
  51. package/dist/infra/port-utils.d.ts.map +1 -0
  52. package/dist/infra/port-utils.js +77 -0
  53. package/dist/infra/port-utils.js.map +1 -0
  54. package/dist/infra/preflight.d.ts +1 -1
  55. package/dist/infra/preflight.d.ts.map +1 -1
  56. package/dist/infra/preflight.js +4 -4
  57. package/dist/infra/preflight.js.map +1 -1
  58. package/dist/infra/s3-state-bucket.d.ts +1 -1
  59. package/dist/infra/s3-state-bucket.d.ts.map +1 -1
  60. package/dist/infra/s3-state-bucket.js +21 -26
  61. package/dist/infra/s3-state-bucket.js.map +1 -1
  62. package/dist/infra/secrets-manager-client.d.ts.map +1 -1
  63. package/dist/infra/secrets-manager-client.js +35 -1
  64. package/dist/infra/secrets-manager-client.js.map +1 -1
  65. package/dist/infra/template-engine.d.ts.map +1 -1
  66. package/dist/infra/template-engine.js +11 -25
  67. package/dist/infra/template-engine.js.map +1 -1
  68. package/dist/infra/tofu-runner.d.ts +1 -2
  69. package/dist/infra/tofu-runner.d.ts.map +1 -1
  70. package/dist/infra/tofu-runner.js +5 -5
  71. package/dist/infra/tofu-runner.js.map +1 -1
  72. package/package.json +10 -6
  73. package/schema/fuel.schema.json +158 -0
@@ -37,38 +37,57 @@ exports.resolveCredentials = resolveCredentials;
37
37
  const path = __importStar(require("path"));
38
38
  const fs = __importStar(require("fs-extra"));
39
39
  const types_1 = require("./types");
40
- async function readCredentialsFile(credPath) {
41
- const file = await fs.readJson(credPath);
42
- const missing = types_1.REQUIRED_CREDENTIAL_KEYS.filter((k) => !file[k]);
43
- if (missing.length > 0) {
44
- throw new Error(`Missing keys in .fuel-credentials: ${missing.join(', ')}`);
40
+ async function tryReadCredentialsFile(credPath) {
41
+ if (!(await fs.pathExists(credPath)))
42
+ return {};
43
+ try {
44
+ const file = await fs.readJson(credPath);
45
+ const result = {};
46
+ for (const key of types_1.REQUIRED_CREDENTIAL_KEYS) {
47
+ if (file[key])
48
+ result[key] = file[key];
49
+ }
50
+ return result;
45
51
  }
46
- return Object.fromEntries(types_1.REQUIRED_CREDENTIAL_KEYS.map((k) => [k, file[k]]));
47
- }
48
- async function resolveCredentials(searchDir) {
49
- // Priority 1: ALL keys present in env
50
- const envValues = types_1.REQUIRED_CREDENTIAL_KEYS.map((k) => process.env[k]);
51
- if (envValues.every(Boolean)) {
52
- return Object.fromEntries(types_1.REQUIRED_CREDENTIAL_KEYS.map((k, i) => [k, envValues[i]]));
52
+ catch {
53
+ return {};
53
54
  }
54
- // Priority 2: .fuel-credentials JSON file in searchDir (or CWD if no searchDir)
55
+ }
56
+ /**
57
+ * Resolve credentials by merging sources in priority order:
58
+ * 1. CLI flag overrides (highest)
59
+ * 2. .fuel-credentials file (searchDir, then CWD fallback)
60
+ * 3. Environment variables (lowest)
61
+ *
62
+ * Sources are merged per-key — e.g., AWS keys from env + GITHUB_TOKEN from file = valid.
63
+ */
64
+ async function resolveCredentials(searchDir, overrides) {
65
+ // Collect file values from searchDir and CWD
55
66
  const credPath = searchDir
56
67
  ? path.join(searchDir, '.fuel-credentials')
57
68
  : path.resolve('.fuel-credentials');
58
- if (await fs.pathExists(credPath)) {
59
- return readCredentialsFile(credPath);
60
- }
61
- // Priority 3: fallback to CWD when searchDir was provided and differs from CWD
69
+ const fileValues = await tryReadCredentialsFile(credPath);
70
+ // Fallback to CWD if searchDir was provided and differs
62
71
  const cwd = process.cwd();
72
+ let cwdValues = {};
63
73
  if (searchDir && path.resolve(searchDir) !== cwd) {
64
- const cwdCredPath = path.resolve('.fuel-credentials');
65
- if (await fs.pathExists(cwdCredPath)) {
66
- return readCredentialsFile(cwdCredPath);
67
- }
74
+ cwdValues = await tryReadCredentialsFile(path.resolve('.fuel-credentials'));
75
+ }
76
+ // Merge per-key: overrides → file (searchDir) → file (CWD) → env
77
+ const resolved = {};
78
+ for (const key of types_1.REQUIRED_CREDENTIAL_KEYS) {
79
+ resolved[key] =
80
+ overrides?.[key] ||
81
+ fileValues[key] ||
82
+ cwdValues[key] ||
83
+ process.env[key] ||
84
+ undefined;
85
+ }
86
+ const missing = types_1.REQUIRED_CREDENTIAL_KEYS.filter((k) => !resolved[k]);
87
+ if (missing.length > 0) {
88
+ throw new Error(`Missing credentials: ${missing.join(', ')}\n` +
89
+ `Provide them via CLI flags, .fuel-credentials file, or environment variables.`);
68
90
  }
69
- // Neither source complete
70
- const missingFromEnv = types_1.REQUIRED_CREDENTIAL_KEYS.filter((k) => !process.env[k]);
71
- throw new Error(`Credentials not found. Missing env vars: ${missingFromEnv.join(', ')}\n` +
72
- `Or create a .fuel-credentials JSON file with those keys.`);
91
+ return resolved;
73
92
  }
74
93
  //# sourceMappingURL=credentials.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/infra/credentials.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,gDAmCC;AApDD,2CAA4B;AAC5B,6CAA8B;AAC9B,mCAA8E;AAE9E,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACjD,MAAM,IAAI,GAA2B,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAChE,MAAM,OAAO,GAAG,gCAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,sCAAsC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3D,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,CACvB,gCAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACnC,CAAA;AAClB,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,SAAkB;IACzD,sCAAsC;IACtC,MAAM,SAAS,GAAG,gCAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACrE,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC,WAAW,CACvB,gCAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAW,CAAC,CAAC,CACrD,CAAA;IAClB,CAAC;IAED,gFAAgF;IAChF,MAAM,QAAQ,GAAG,SAAS;QACxB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC;QAC3C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAErC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;IAED,+EAA+E;IAC/E,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;QACrD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO,mBAAmB,CAAC,WAAW,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,MAAM,cAAc,GAAG,gCAAwB,CAAC,MAAM,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CACvB,CAAA;IACD,MAAM,IAAI,KAAK,CACb,4CAA4C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACvE,0DAA0D,CAC7D,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/infra/credentials.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,gDAqCC;AA/DD,2CAA4B;AAC5B,6CAA8B;AAC9B,mCAA8E;AAE9E,KAAK,UAAU,sBAAsB,CAAC,QAAgB;IACpD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAE,OAAO,EAAE,CAAA;IAC/C,IAAI,CAAC;QACH,MAAM,IAAI,GAA2B,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAChE,MAAM,MAAM,GAA2C,EAAE,CAAA;QACzD,KAAK,MAAM,GAAG,IAAI,gCAAwB,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,kBAAkB,CACtC,SAAkB,EAClB,SAAkD;IAElD,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,SAAS;QACxB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC;QAC3C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACrC,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAEzD,wDAAwD;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,IAAI,SAAS,GAA2C,EAAE,CAAA;IAC1D,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;QACjD,SAAS,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAC7E,CAAC;IAED,iEAAiE;IACjE,MAAM,QAAQ,GAA2C,EAAE,CAAA;IAC3D,KAAK,MAAM,GAAG,IAAI,gCAAwB,EAAE,CAAC;QAC3C,QAAQ,CAAC,GAAG,CAAC;YACX,SAAS,EAAE,CAAC,GAAG,CAAC;gBAChB,UAAU,CAAC,GAAG,CAAC;gBACf,SAAS,CAAC,GAAG,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBAChB,SAAS,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAAG,gCAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IACpE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAC5C,+EAA+E,CAClF,CAAA;IACH,CAAC;IAED,OAAO,QAAuB,CAAA;AAChC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export declare function wireGitRemote(projectDir: string, repoUrl: string): Promise<void>;
2
2
  export declare function commitAll(projectDir: string, message: string): Promise<boolean>;
3
- export declare function pushToRemote(projectDir: string, githubToken: string, branches: string[]): Promise<void>;
3
+ export declare function pushToRemote(projectDir: string, githubToken: string, branches: string[], forcePush?: boolean): Promise<void>;
4
4
  //# sourceMappingURL=git-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-client.d.ts","sourceRoot":"","sources":["../../src/infra/git-client.ts"],"names":[],"mappings":"AAgCA,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtF;AAED,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAarF;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC,CAiCf"}
1
+ {"version":3,"file":"git-client.d.ts","sourceRoot":"","sources":["../../src/infra/git-client.ts"],"names":[],"mappings":"AAgCA,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWtF;AAED,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAarF;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -25,9 +25,10 @@ function spawnQuiet(cmd, args, cwd) {
25
25
  });
26
26
  }
27
27
  async function wireGitRemote(projectDir, repoUrl) {
28
- const setUrlResult = await spawnSimple('git', ['remote', 'set-url', 'origin', repoUrl], projectDir);
28
+ // Try set-url quietly it fails if origin doesn't exist yet
29
+ const setUrlResult = await spawnQuiet('git', ['remote', 'set-url', 'origin', repoUrl], projectDir);
29
30
  if (setUrlResult.code !== 0) {
30
- const addResult = await spawnSimple('git', ['remote', 'add', 'origin', repoUrl], projectDir);
31
+ const addResult = await spawnQuiet('git', ['remote', 'add', 'origin', repoUrl], projectDir);
31
32
  if (addResult.code !== 0) {
32
33
  throw new Error(`Failed to set git remote origin to ${repoUrl}`);
33
34
  }
@@ -45,7 +46,7 @@ async function commitAll(projectDir, message) {
45
46
  }
46
47
  return true;
47
48
  }
48
- async function pushToRemote(projectDir, githubToken, branches) {
49
+ async function pushToRemote(projectDir, githubToken, branches, forcePush) {
49
50
  const { stdout: originalUrl } = await spawnQuiet('git', ['remote', 'get-url', 'origin'], projectDir);
50
51
  const authUrl = originalUrl.replace('https://github.com/', `https://x-access-token:${githubToken}@github.com/`);
51
52
  await spawnSimple('git', ['remote', 'set-url', 'origin', authUrl], projectDir);
@@ -59,7 +60,10 @@ async function pushToRemote(projectDir, githubToken, branches) {
59
60
  throw new Error(`Failed to create local branch: ${branch}`);
60
61
  }
61
62
  }
62
- const pushResult = await spawnSimple('git', ['push', '-u', 'origin', branch], projectDir);
63
+ const pushArgs = forcePush
64
+ ? ['push', '--force', '-u', 'origin', branch]
65
+ : ['push', '-u', 'origin', branch];
66
+ const pushResult = await spawnSimple('git', pushArgs, projectDir);
63
67
  if (pushResult.code !== 0) {
64
68
  throw new Error(`Failed to push branch: ${branch}`);
65
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"git-client.js","sourceRoot":"","sources":["../../src/infra/git-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-client.js","sourceRoot":"","sources":["../../src/infra/git-client.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import { InfraConfig, Credentials } from './types';
2
2
  export interface OrchestratorOptions {
3
- skipCompensation?: boolean;
3
+ destroyOnFailure?: boolean;
4
4
  planOnly?: boolean;
5
+ targetBranch?: string;
6
+ forcePush?: boolean;
7
+ skipBranchProtection?: boolean;
5
8
  }
6
9
  export declare function runInfraOrchestrator(targetRoot: string, _appName: string, config: InfraConfig, credentials: Credentials, options?: OrchestratorOptions): Promise<void>;
7
10
  //# sourceMappingURL=orchestrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/infra/orchestrator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAwDlD,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAgJf"}
1
+ {"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/infra/orchestrator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAqDlD,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA0Jf"}
@@ -37,12 +37,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.runInfraOrchestrator = runInfraOrchestrator;
40
- const crypto = __importStar(require("crypto"));
41
- const fs = __importStar(require("fs"));
42
40
  const path = __importStar(require("path"));
43
41
  const chalk_1 = __importDefault(require("chalk"));
44
42
  const tofu_runner_1 = require("./tofu-runner");
45
43
  const secrets_manager_client_1 = require("./secrets-manager-client");
44
+ const config_writer_1 = require("./config-writer");
46
45
  const git_client_1 = require("./git-client");
47
46
  const github_client_1 = require("./github-client");
48
47
  const github_secrets_client_1 = require("./github-secrets-client");
@@ -66,7 +65,7 @@ async function runCompensation(infraDir, credentials, tofuVars) {
66
65
  }
67
66
  console.log(chalk_1.default.green('AWS resources cleaned up'));
68
67
  }
69
- function printOutputTable(albDns, ecrUrl, githubRepoUrl, dbUsername, dbPassword) {
68
+ function printOutputTable(albDns, ecrUrl, githubRepoUrl) {
70
69
  const divider = chalk_1.default.gray('─'.repeat(60));
71
70
  console.log('\n' + divider);
72
71
  console.log(chalk_1.default.bold(' Deployment Complete'));
@@ -74,8 +73,6 @@ function printOutputTable(albDns, ecrUrl, githubRepoUrl, dbUsername, dbPassword)
74
73
  console.log(` ${chalk_1.default.dim('ALB DNS')} ${albDns}`);
75
74
  console.log(` ${chalk_1.default.dim('ECR URL')} ${ecrUrl}`);
76
75
  console.log(` ${chalk_1.default.dim('GitHub Repo')} ${githubRepoUrl}`);
77
- console.log(` ${chalk_1.default.dim('DB Username')} ${dbUsername}`);
78
- console.log(` ${chalk_1.default.dim('DB Password')} ${dbPassword} ${chalk_1.default.yellow("Save these — they won't be shown again")}`);
79
76
  console.log(divider);
80
77
  console.log(chalk_1.default.cyan('\n Next steps:'));
81
78
  console.log(' Your code has been pushed. Your first deploy will start shortly.\n');
@@ -85,36 +82,39 @@ async function runInfraOrchestrator(targetRoot, _appName, config, credentials, o
85
82
  const repoName = `${config.name}-monorepo`;
86
83
  // Generate TofuVars
87
84
  const tofuVars = {
88
- db_password: crypto.randomBytes(32).toString('hex'),
89
85
  db_username: slugify(config.name),
90
86
  db_name: slugify(config.name),
91
87
  github_repo_name: repoName,
92
88
  };
93
89
  // Ensure S3 state bucket exists (before Tofu init)
94
90
  console.log(chalk_1.default.cyan('--- Ensuring state bucket exists ---'));
95
- const suffix = await (0, s3_state_bucket_1.loadOrCreateSuffix)(targetRoot);
91
+ const suffix = (0, s3_state_bucket_1.deriveSuffix)(config.name);
96
92
  const bucketName = (0, s3_state_bucket_1.buildStateBucketName)(config.name, suffix);
97
93
  await (0, s3_state_bucket_1.ensureStateBucket)(credentials, bucketName);
98
94
  // Write secret to AWS Secrets Manager (before Tofu — Tofu reads it via data.tf)
99
95
  const secretName = `${config.name}-infrastructure-variables`;
100
- const fuelConfigPath = path.join(targetRoot, 'fuel.config.json');
101
- const fuelConfigContents = JSON.parse(fs.readFileSync(fuelConfigPath, 'utf-8'));
96
+ const secretPayload = {
97
+ ...config,
98
+ seed: (0, config_writer_1.generateSeed)(),
99
+ aws_region: credentials.AWS_REGION,
100
+ github_org: credentials.GITHUB_ORGANIZATION,
101
+ };
102
102
  console.log(chalk_1.default.cyan('--- Writing infrastructure secret ---'));
103
- await (0, secrets_manager_client_1.putSecret)(credentials, secretName, fuelConfigContents);
103
+ await (0, secrets_manager_client_1.putSecret)(credentials, secretName, secretPayload);
104
104
  console.log(chalk_1.default.green('Secret written to AWS Secrets Manager'));
105
105
  // SIGINT compensation setup
106
106
  const state = { tofuStarted: false };
107
107
  const sigintHandler = async () => {
108
- if (options?.skipCompensation) {
109
- console.log(chalk_1.default.yellow('\nInterrupted — partial resources preserved.'));
110
- console.log(chalk_1.default.yellow('Re-run "fuel infra:deploy" to resume.\n'));
111
- }
112
- else {
108
+ if (options?.destroyOnFailure) {
113
109
  console.log(chalk_1.default.yellow('\nInterrupted — running compensation...'));
114
110
  if (state.tofuStarted) {
115
111
  await runCompensation(infraDir, credentials, tofuVars);
116
112
  }
117
113
  }
114
+ else {
115
+ console.log(chalk_1.default.yellow('\nInterrupted — partial resources preserved.'));
116
+ console.log(chalk_1.default.yellow('Re-run "fuel infra:deploy" to resume.\n'));
117
+ }
118
118
  process.exit(1);
119
119
  };
120
120
  process.once('SIGINT', sigintHandler);
@@ -163,38 +163,47 @@ async function runInfraOrchestrator(targetRoot, _appName, config, credentials, o
163
163
  if (committed) {
164
164
  console.log(chalk_1.default.green('Infrastructure files committed'));
165
165
  }
166
- const branches = [...new Set(config.apps.map(app => app.branch))];
166
+ const allBranches = [...new Set(config.apps.map(app => app.branch))];
167
+ const branches = options?.targetBranch
168
+ ? allBranches.filter(b => b === options.targetBranch)
169
+ : allBranches;
167
170
  try {
168
- await (0, git_client_1.pushToRemote)(targetRoot, credentials.GITHUB_TOKEN, branches);
171
+ await (0, git_client_1.pushToRemote)(targetRoot, credentials.GITHUB_TOKEN, branches, options?.forcePush);
169
172
  console.log(chalk_1.default.green(`Code pushed to: ${branches.join(', ')}`));
170
173
  }
171
174
  catch {
172
175
  console.log(chalk_1.default.yellow(`Warning: automatic push failed. Push manually: git push -u origin ${branches.join(' ')}`));
173
176
  }
174
177
  // Step 5: Branch protections
175
- console.log(chalk_1.default.cyan('--- Applying branch protections ---'));
176
- for (const branch of branches) {
177
- try {
178
- await (0, github_client_1.setBranchProtection)(credentials.GITHUB_TOKEN, credentials.GITHUB_ORGANIZATION, repoName, branch);
179
- console.log(chalk_1.default.green(`✓ Branch protection set for: ${branch}`));
180
- }
181
- catch {
182
- console.log(chalk_1.default.yellow(`Warning: could not set branch protection for ${branch}`));
178
+ if (!options?.skipBranchProtection) {
179
+ console.log(chalk_1.default.cyan('--- Applying branch protections ---'));
180
+ for (const branch of branches) {
181
+ try {
182
+ await (0, github_client_1.setBranchProtection)(credentials.GITHUB_TOKEN, credentials.GITHUB_ORGANIZATION, repoName, branch);
183
+ console.log(chalk_1.default.green(`✓ Branch protection set for: ${branch}`));
184
+ }
185
+ catch {
186
+ console.log(chalk_1.default.yellow(`Warning: could not set branch protection for ${branch}`));
187
+ }
183
188
  }
184
189
  }
190
+ else {
191
+ console.log(chalk_1.default.yellow('--- Skipping branch protections (--skip-branch-protection) ---'));
192
+ }
185
193
  // Print output table
186
194
  const albDns = result.outputs['alb_dns'].value;
187
195
  const ecrUrl = result.outputs['ecr_url'].value;
188
- printOutputTable(albDns, ecrUrl, githubRepoUrl, tofuVars.db_username, tofuVars.db_password);
196
+ printOutputTable(albDns, ecrUrl, githubRepoUrl);
189
197
  }
190
198
  catch (err) {
191
199
  if (err instanceof tofu_runner_1.TofuApplyError) {
192
- if (options?.skipCompensation) {
200
+ if (options?.destroyOnFailure) {
201
+ await runCompensation(infraDir, credentials, tofuVars);
202
+ }
203
+ else {
193
204
  console.log(chalk_1.default.yellow('\n Partial resources preserved. Fix the issue and re-run:'));
194
205
  console.log(chalk_1.default.yellow(' fuel infra:deploy\n'));
195
- process.exit(1);
196
206
  }
197
- await runCompensation(infraDir, credentials, tofuVars);
198
207
  process.exit(1);
199
208
  }
200
209
  throw err;
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/infra/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/infra/orchestrator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+DA,oDAgKC;AA/ND,2CAA4B;AAC5B,kDAAyB;AAEzB,+CAAwF;AACxF,qEAAoD;AACpD,mDAA8C;AAC9C,6CAAqE;AACrE,mDAAuE;AACvE,mEAAwD;AACxD,6CAA6C;AAC7C,uDAAyF;AAEzF,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;AACvD,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,QAAgB,EAChB,WAAwB,EACxB,QAAkB;IAElB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAG,IAAA,8BAAgB,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IACpD,MAAM,MAAM,GAAG;QACb,iBAAiB,EAAE,WAAW,CAAC,iBAAiB;QAChD,qBAAqB,EAAE,WAAW,CAAC,qBAAqB;QACxD,UAAU,EAAE,WAAW,CAAC,UAAU;KACnC,CAAA;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,2BAAc,EAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAE7D,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAA;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAA;AACtD,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAc,EACd,MAAc,EACd,aAAqB;IAErB,MAAM,OAAO,GAAG,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,CAAA;IAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAA;IAChD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACpB,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,MAAM,EAAE,CAAC,CAAA;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,MAAM,EAAE,CAAC,CAAA;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,aAAa,EAAE,CAAC,CAAA;IAClE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAC1C,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAA;AACrF,CAAC;AAUM,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,QAAgB,EAChB,MAAmB,EACnB,WAAwB,EACxB,OAA6B;IAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAC/C,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,IAAI,WAAW,CAAA;IAE1C,oBAAoB;IACpB,MAAM,QAAQ,GAAa;QACzB,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QACjC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAC7B,gBAAgB,EAAE,QAAQ;KAC3B,CAAA;IAED,mDAAmD;IACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,CAAA;IAC/D,MAAM,MAAM,GAAG,IAAA,8BAAY,EAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxC,MAAM,UAAU,GAAG,IAAA,sCAAoB,EAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC5D,MAAM,IAAA,mCAAiB,EAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IAEhD,gFAAgF;IAChF,MAAM,UAAU,GAAG,GAAG,MAAM,CAAC,IAAI,2BAA2B,CAAA;IAC5D,MAAM,aAAa,GAAG;QACpB,GAAG,MAAM;QACT,IAAI,EAAE,IAAA,4BAAY,GAAE;QACpB,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,UAAU,EAAE,WAAW,CAAC,mBAAmB;KAC5C,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAA;IAChE,MAAM,IAAA,kCAAS,EAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;IACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAA;IAEjE,4BAA4B;IAC5B,MAAM,KAAK,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;IAEpC,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAC/B,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAA;YACpE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,MAAM,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAA;YACzE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC,CAAA;QACtE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IAErC,IAAI,CAAC;QACH,sDAAsD;QACtD,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,CAAA;YAC7D,IAAI,CAAC;gBACH,MAAM,IAAA,gCAAgB,EACpB,WAAW,CAAC,YAAY,EACxB,WAAW,CAAC,mBAAmB,EAC/B,QAAQ,CACT,CAAA;gBACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,yBAAyB,WAAW,CAAC,mBAAmB,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAA;YAClG,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,8DAA8D;gBAC9D,IAAI,GAAG,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,cAAc,WAAW,CAAC,mBAAmB,IAAI,QAAQ,gCAAgC,CAAC,CAAC,CAAA;gBACtH,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,CAAA;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,gDAAgD;QAChD,KAAK,CAAC,WAAW,GAAG,IAAI,CAAA;QACxB,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAY,EAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;YACjE,QAAQ,EAAE,OAAO,EAAE,QAAQ;SAC5B,CAAC,CAAA;QAEF,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAA;YAC5E,OAAM;QACR,CAAC;QAED,qCAAqC;QACrC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAA;QACjE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAA;QACtD,MAAM,OAAO,GAA2B;YACtC,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,YAAY,EAAE,OAAO;YACrB,YAAY,EAAE,MAAM,CAAC,IAAI;SAC1B,CAAA;QACD,MAAM,IAAA,sCAAc,EAClB,WAAW,CAAC,YAAY,EACxB,WAAW,CAAC,mBAAmB,EAC/B,QAAQ,EACR,OAAO,CACR,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAA;QAE/D,oBAAoB;QACpB,MAAM,aAAa,GAAG,MAAM,CAAC,OAAQ,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAA;QACnE,MAAM,IAAA,0BAAa,EAAC,UAAU,EAAE,aAAa,CAAC,CAAA;QAC9C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAA;QAEjD,MAAM,SAAS,GAAG,MAAM,IAAA,sBAAS,EAAC,UAAU,EAAE,kCAAkC,CAAC,CAAA;QACjF,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAA;QAC5D,CAAC;QAED,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACpE,MAAM,QAAQ,GAAG,OAAO,EAAE,YAAY;YACpC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC;YACrD,CAAC,CAAC,WAAW,CAAA;QACf,IAAI,CAAC;YACH,MAAM,IAAA,yBAAY,EAAC,UAAU,EAAE,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAA;YACtF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,qEAAqE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;QACtH,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAA;YAC9D,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;gBAC9B,IAAI,CAAC;oBACH,MAAM,IAAA,mCAAmB,EACvB,WAAW,CAAC,YAAY,EACxB,WAAW,CAAC,mBAAmB,EAC/B,QAAQ,EACR,MAAM,CACP,CAAA;oBACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC,CAAA;gBACpE,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gDAAgD,MAAM,EAAE,CAAC,CAAC,CAAA;gBACrF,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,gEAAgE,CAAC,CAAC,CAAA;QAC7F,CAAC;QAED,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAA;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAA;QAC/C,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAA;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,4BAAc,EAAE,CAAC;YAClC,IAAI,OAAO,EAAE,gBAAgB,EAAE,CAAC;gBAC9B,MAAM,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;YACxD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,4DAA4D,CAAC,CAAC,CAAA;gBACvF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAA;YACtD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAA;IACjD,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function isPortAvailable(port: number): Promise<boolean>;
2
+ export declare function findAvailablePort(preferredPort: number): Promise<number>;
3
+ export declare function patchDotEnvPort(envFilePath: string, key: string, port: number): Promise<void>;
4
+ //# sourceMappingURL=port-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port-utils.d.ts","sourceRoot":"","sources":["../../src/infra/port-utils.ts"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAS9D;AAED,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAc9E;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -0,0 +1,77 @@
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.isPortAvailable = isPortAvailable;
37
+ exports.findAvailablePort = findAvailablePort;
38
+ exports.patchDotEnvPort = patchDotEnvPort;
39
+ const net = __importStar(require("net"));
40
+ const fs = __importStar(require("fs-extra"));
41
+ function isPortAvailable(port) {
42
+ return new Promise((resolve) => {
43
+ const server = net.createServer();
44
+ server.once('error', () => resolve(false));
45
+ server.once('listening', () => {
46
+ server.close(() => resolve(true));
47
+ });
48
+ server.listen(port, '127.0.0.1');
49
+ });
50
+ }
51
+ async function findAvailablePort(preferredPort) {
52
+ if (await isPortAvailable(preferredPort)) {
53
+ return preferredPort;
54
+ }
55
+ return new Promise((resolve, reject) => {
56
+ const server = net.createServer();
57
+ server.once('error', reject);
58
+ server.once('listening', () => {
59
+ const addr = server.address();
60
+ const port = addr.port;
61
+ server.close(() => resolve(port));
62
+ });
63
+ server.listen(0, '127.0.0.1');
64
+ });
65
+ }
66
+ async function patchDotEnvPort(envFilePath, key, port) {
67
+ let content = await fs.readFile(envFilePath, 'utf-8');
68
+ const regex = new RegExp(`^${key}=.*$`, 'm');
69
+ if (regex.test(content)) {
70
+ content = content.replace(regex, `${key}=${port}`);
71
+ }
72
+ else {
73
+ content = content.trimEnd() + `\n${key}=${port}\n`;
74
+ }
75
+ await fs.writeFile(envFilePath, content, 'utf-8');
76
+ }
77
+ //# sourceMappingURL=port-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"port-utils.js","sourceRoot":"","sources":["../../src/infra/port-utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,0CASC;AAED,8CAcC;AAED,0CAaC;AA3CD,yCAA0B;AAC1B,6CAA8B;AAE9B,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;QACjC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,aAAqB;IAC3D,IAAI,MAAM,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;QACzC,OAAO,aAAa,CAAA;IACtB,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAA;QACjC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC5B,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAqB,CAAA;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;YACtB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,GAAW,EACX,IAAY;IAEZ,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IACrD,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5C,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,CAAA;IACpD,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,IAAI,IAAI,IAAI,CAAA;IACpD,CAAC;IACD,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AACnD,CAAC"}
@@ -5,5 +5,5 @@ export interface PreflightResult {
5
5
  credentials: Credentials;
6
6
  tofuVersion: string;
7
7
  }
8
- export declare function runPreflight(configPath: string): Promise<PreflightResult>;
8
+ export declare function runPreflight(configPath: string, credentialOverrides?: Partial<Record<import('./types').CredentialKey, string>>): Promise<PreflightResult>;
9
9
  //# sourceMappingURL=preflight.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/infra/preflight.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAclD,wBAAgB,gBAAgB,IAAI,MAAM,CA2BzC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA8B/E"}
1
+ {"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/infra/preflight.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAclD,wBAAgB,gBAAgB,IAAI,MAAM,CA2BzC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,WAAW,CAAA;IACnB,WAAW,EAAE,WAAW,CAAA;IACxB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,MAAM,EAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,GAC7E,OAAO,CAAC,eAAe,CAAC,CA8B1B"}
@@ -41,7 +41,7 @@ function checkTofuVersion() {
41
41
  }
42
42
  return `${match[1]}.${match[2]}.${match[3]}`;
43
43
  }
44
- async function runPreflight(configPath) {
44
+ async function runPreflight(configPath, credentialOverrides) {
45
45
  // Check 1: tofu binary
46
46
  let tofuVersion;
47
47
  try {
@@ -54,7 +54,7 @@ async function runPreflight(configPath) {
54
54
  // Check 2: credentials
55
55
  let credentials;
56
56
  try {
57
- credentials = await (0, credentials_1.resolveCredentials)();
57
+ credentials = await (0, credentials_1.resolveCredentials)(undefined, credentialOverrides);
58
58
  pass('AWS credentials valid');
59
59
  pass('GitHub token valid');
60
60
  }
@@ -65,10 +65,10 @@ async function runPreflight(configPath) {
65
65
  let config;
66
66
  try {
67
67
  config = await (0, config_loader_1.loadInfraConfig)(configPath);
68
- pass(`config.json valid — ${config.apps.length} app(s) (${config.apps.map((a) => a.name).join(', ')})`);
68
+ pass(`fuel.yml valid — ${config.apps.length} app(s) (${config.apps.map((a) => a.name).join(', ')})`);
69
69
  }
70
70
  catch (err) {
71
- fail('config.json', err.message);
71
+ fail('fuel.yml', err.message);
72
72
  }
73
73
  return { config: config, credentials: credentials, tofuVersion: tofuVersion };
74
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/infra/preflight.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/infra/preflight.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { Credentials } from './types';
2
- export declare function loadOrCreateSuffix(projectRoot: string): Promise<string>;
2
+ export declare function deriveSuffix(projectName: string): string;
3
3
  export declare function buildStateBucketName(projectName: string, suffix: string): string;
4
4
  export declare function ensureStateBucket(credentials: Credentials, bucketName: string): Promise<void>;
5
5
  //# sourceMappingURL=s3-state-bucket.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"s3-state-bucket.d.ts","sourceRoot":"","sources":["../../src/infra/s3-state-bucket.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAYrC,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAW7E;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
1
+ {"version":3,"file":"s3-state-bucket.d.ts","sourceRoot":"","sources":["../../src/infra/s3-state-bucket.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAErC,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAyCf"}
@@ -36,29 +36,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.loadOrCreateSuffix = loadOrCreateSuffix;
39
+ exports.deriveSuffix = deriveSuffix;
40
40
  exports.buildStateBucketName = buildStateBucketName;
41
41
  exports.ensureStateBucket = ensureStateBucket;
42
42
  const client_s3_1 = require("@aws-sdk/client-s3");
43
- const fs = __importStar(require("fs-extra"));
44
- const path = __importStar(require("path"));
45
43
  const crypto = __importStar(require("crypto"));
46
44
  const chalk_1 = __importDefault(require("chalk"));
47
- const STATE_FILE = '.fuel-infra-state.json';
48
- function generateSuffix() {
49
- return crypto.randomBytes(4).toString('hex');
50
- }
51
- async function loadOrCreateSuffix(projectRoot) {
52
- const stateFilePath = path.join(projectRoot, STATE_FILE);
53
- if (await fs.pathExists(stateFilePath)) {
54
- const state = await fs.readJson(stateFilePath);
55
- if (state.stateBucketSuffix) {
56
- return state.stateBucketSuffix;
57
- }
58
- }
59
- const suffix = generateSuffix();
60
- await fs.writeJson(stateFilePath, { stateBucketSuffix: suffix }, { spaces: 2 });
61
- return suffix;
45
+ function deriveSuffix(projectName) {
46
+ return crypto.createHash('sha256').update(projectName).digest('hex').slice(0, 8);
62
47
  }
63
48
  function buildStateBucketName(projectName, suffix) {
64
49
  return `${projectName}-infrastructure-tf-${suffix}`;
@@ -77,16 +62,26 @@ async function ensureStateBucket(credentials, bucketName) {
77
62
  return;
78
63
  }
79
64
  catch (err) {
80
- if (err.name !== 'NotFound' && err['$metadata']?.httpStatusCode !== 404) {
81
- throw err;
65
+ const statusCode = err['$metadata']?.httpStatusCode;
66
+ if (statusCode !== 404 && err.name !== 'NotFound') {
67
+ const detail = err.message || err.name || 'Unknown error';
68
+ throw new Error(`Failed to check state bucket "${bucketName}" (HTTP ${statusCode || '?'}): ${detail}\n` +
69
+ 'Verify your AWS credentials have s3:HeadBucket permission and the region is correct.');
82
70
  }
83
71
  }
84
72
  console.log(chalk_1.default.cyan(` Creating state bucket: ${bucketName}`));
85
- await client.send(new client_s3_1.CreateBucketCommand({ Bucket: bucketName }));
86
- await client.send(new client_s3_1.PutBucketVersioningCommand({
87
- Bucket: bucketName,
88
- VersioningConfiguration: { Status: 'Enabled' },
89
- }));
90
- console.log(chalk_1.default.green(` ✓ State bucket created with versioning enabled`));
73
+ try {
74
+ await client.send(new client_s3_1.CreateBucketCommand({ Bucket: bucketName }));
75
+ await client.send(new client_s3_1.PutBucketVersioningCommand({
76
+ Bucket: bucketName,
77
+ VersioningConfiguration: { Status: 'Enabled' },
78
+ }));
79
+ console.log(chalk_1.default.green(` ✓ State bucket created with versioning enabled`));
80
+ }
81
+ catch (err) {
82
+ const detail = err.message || err.name || 'Unknown error';
83
+ throw new Error(`Failed to create state bucket "${bucketName}": ${detail}\n` +
84
+ 'Verify your AWS credentials have s3:CreateBucket permission and the region is correct.');
85
+ }
91
86
  }
92
87
  //# sourceMappingURL=s3-state-bucket.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"s3-state-bucket.js","sourceRoot":"","sources":["../../src/infra/s3-state-bucket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,gDAWC;AAED,oDAEC;AAED,8CA+BC;AAtED,kDAK2B;AAC3B,6CAA8B;AAC9B,2CAA4B;AAC5B,+CAAgC;AAChC,kDAAyB;AAGzB,MAAM,UAAU,GAAG,wBAAwB,CAAA;AAM3C,SAAS,cAAc;IACrB,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC9C,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,WAAmB;IAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;IACxD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,MAAM,KAAK,GAAe,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QAC1D,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC,iBAAiB,CAAA;QAChC,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;IAC/B,MAAM,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAgB,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAA;IAC7F,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAgB,oBAAoB,CAAC,WAAmB,EAAE,MAAc;IACtE,OAAO,GAAG,WAAW,sBAAsB,MAAM,EAAE,CAAA;AACrD,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,WAAwB,EACxB,UAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,oBAAQ,CAAC;QAC1B,MAAM,EAAE,WAAW,CAAC,UAAU;QAC9B,WAAW,EAAE;YACX,WAAW,EAAE,WAAW,CAAC,iBAAiB;YAC1C,eAAe,EAAE,WAAW,CAAC,qBAAqB;SACnD;KACF,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,6BAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC,CAAA;QAC1E,OAAM;IACR,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,cAAc,KAAK,GAAG,EAAE,CAAC;YACxE,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC,CAAA;IACjE,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,+BAAmB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;IAClE,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,sCAA0B,CAAC;QAC7B,MAAM,EAAE,UAAU;QAClB,uBAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;KAC/C,CAAC,CACH,CAAA;IACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAA;AAC9E,CAAC"}
1
+ {"version":3,"file":"s3-state-bucket.js","sourceRoot":"","sources":["../../src/infra/s3-state-bucket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,oCAEC;AAED,oDAEC;AAED,8CA4CC;AA9DD,kDAK2B;AAC3B,+CAAgC;AAChC,kDAAyB;AAGzB,SAAgB,YAAY,CAAC,WAAmB;IAC9C,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AAClF,CAAC;AAED,SAAgB,oBAAoB,CAAC,WAAmB,EAAE,MAAc;IACtE,OAAO,GAAG,WAAW,sBAAsB,MAAM,EAAE,CAAA;AACrD,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,WAAwB,EACxB,UAAkB;IAElB,MAAM,MAAM,GAAG,IAAI,oBAAQ,CAAC;QAC1B,MAAM,EAAE,WAAW,CAAC,UAAU;QAC9B,WAAW,EAAE;YACX,WAAW,EAAE,WAAW,CAAC,iBAAiB;YAC1C,eAAe,EAAE,WAAW,CAAC,qBAAqB;SACnD;KACF,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,6BAAiB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC,CAAA;QAC1E,OAAM;IACR,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,EAAE,cAAc,CAAA;QACnD,IAAI,UAAU,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,eAAe,CAAA;YACzD,MAAM,IAAI,KAAK,CACb,iCAAiC,UAAU,WAAW,UAAU,IAAI,GAAG,MAAM,MAAM,IAAI;gBACrF,sFAAsF,CACzF,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC,CAAA;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,+BAAmB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAA;QAClE,MAAM,MAAM,CAAC,IAAI,CACf,IAAI,sCAA0B,CAAC;YAC7B,MAAM,EAAE,UAAU;YAClB,uBAAuB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;SAC/C,CAAC,CACH,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAA;IAC9E,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,eAAe,CAAA;QACzD,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,MAAM,MAAM,IAAI;YAC1D,wFAAwF,CAC3F,CAAA;IACH,CAAC;AACH,CAAC"}