@swovohq/fuel 0.1.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 (109) hide show
  1. package/dist/bin/fuel.d.ts +3 -0
  2. package/dist/bin/fuel.d.ts.map +1 -0
  3. package/dist/bin/fuel.js +353 -0
  4. package/dist/bin/fuel.js.map +1 -0
  5. package/dist/cleanup/finalize.d.ts +11 -0
  6. package/dist/cleanup/finalize.d.ts.map +1 -0
  7. package/dist/cleanup/finalize.js +116 -0
  8. package/dist/cleanup/finalize.js.map +1 -0
  9. package/dist/commands/create-app.d.ts +14 -0
  10. package/dist/commands/create-app.d.ts.map +1 -0
  11. package/dist/commands/create-app.js +354 -0
  12. package/dist/commands/create-app.js.map +1 -0
  13. package/dist/commands/infra-deploy.d.ts +8 -0
  14. package/dist/commands/infra-deploy.d.ts.map +1 -0
  15. package/dist/commands/infra-deploy.js +102 -0
  16. package/dist/commands/infra-deploy.js.map +1 -0
  17. package/dist/commands/infra-destroy.d.ts +5 -0
  18. package/dist/commands/infra-destroy.d.ts.map +1 -0
  19. package/dist/commands/infra-destroy.js +85 -0
  20. package/dist/commands/infra-destroy.js.map +1 -0
  21. package/dist/commands/infra-init.d.ts +75 -0
  22. package/dist/commands/infra-init.d.ts.map +1 -0
  23. package/dist/commands/infra-init.js +577 -0
  24. package/dist/commands/infra-init.js.map +1 -0
  25. package/dist/commands/list-modules.d.ts +2 -0
  26. package/dist/commands/list-modules.d.ts.map +1 -0
  27. package/dist/commands/list-modules.js +71 -0
  28. package/dist/commands/list-modules.js.map +1 -0
  29. package/dist/commands/migrate-init.d.ts +6 -0
  30. package/dist/commands/migrate-init.d.ts.map +1 -0
  31. package/dist/commands/migrate-init.js +174 -0
  32. package/dist/commands/migrate-init.js.map +1 -0
  33. package/dist/engines/convention.d.ts +3 -0
  34. package/dist/engines/convention.d.ts.map +1 -0
  35. package/dist/engines/convention.js +76 -0
  36. package/dist/engines/convention.js.map +1 -0
  37. package/dist/engines/dependencies.d.ts +20 -0
  38. package/dist/engines/dependencies.d.ts.map +1 -0
  39. package/dist/engines/dependencies.js +26 -0
  40. package/dist/engines/dependencies.js.map +1 -0
  41. package/dist/engines/monorepo.d.ts +6 -0
  42. package/dist/engines/monorepo.d.ts.map +1 -0
  43. package/dist/engines/monorepo.js +56 -0
  44. package/dist/engines/monorepo.js.map +1 -0
  45. package/dist/engines/template-source.d.ts +9 -0
  46. package/dist/engines/template-source.d.ts.map +1 -0
  47. package/dist/engines/template-source.js +123 -0
  48. package/dist/engines/template-source.js.map +1 -0
  49. package/dist/index.d.ts +8 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +16 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/infra/config-loader.d.ts +4 -0
  54. package/dist/infra/config-loader.d.ts.map +1 -0
  55. package/dist/infra/config-loader.js +57 -0
  56. package/dist/infra/config-loader.js.map +1 -0
  57. package/dist/infra/config-writer.d.ts +9 -0
  58. package/dist/infra/config-writer.d.ts.map +1 -0
  59. package/dist/infra/config-writer.js +58 -0
  60. package/dist/infra/config-writer.js.map +1 -0
  61. package/dist/infra/credentials.d.ts +3 -0
  62. package/dist/infra/credentials.d.ts.map +1 -0
  63. package/dist/infra/credentials.js +74 -0
  64. package/dist/infra/credentials.js.map +1 -0
  65. package/dist/infra/dependency-checker.d.ts +9 -0
  66. package/dist/infra/dependency-checker.d.ts.map +1 -0
  67. package/dist/infra/dependency-checker.js +41 -0
  68. package/dist/infra/dependency-checker.js.map +1 -0
  69. package/dist/infra/git-client.d.ts +2 -0
  70. package/dist/infra/git-client.d.ts.map +1 -0
  71. package/dist/infra/git-client.js +22 -0
  72. package/dist/infra/git-client.js.map +1 -0
  73. package/dist/infra/github-secrets-client.d.ts +3 -0
  74. package/dist/infra/github-secrets-client.d.ts.map +1 -0
  75. package/dist/infra/github-secrets-client.js +37 -0
  76. package/dist/infra/github-secrets-client.js.map +1 -0
  77. package/dist/infra/orchestrator.d.ts +7 -0
  78. package/dist/infra/orchestrator.d.ts.map +1 -0
  79. package/dist/infra/orchestrator.js +187 -0
  80. package/dist/infra/orchestrator.js.map +1 -0
  81. package/dist/infra/preflight.d.ts +9 -0
  82. package/dist/infra/preflight.d.ts.map +1 -0
  83. package/dist/infra/preflight.js +75 -0
  84. package/dist/infra/preflight.js.map +1 -0
  85. package/dist/infra/s3-state-bucket.d.ts +5 -0
  86. package/dist/infra/s3-state-bucket.d.ts.map +1 -0
  87. package/dist/infra/s3-state-bucket.js +92 -0
  88. package/dist/infra/s3-state-bucket.js.map +1 -0
  89. package/dist/infra/secrets-manager-client.d.ts +3 -0
  90. package/dist/infra/secrets-manager-client.d.ts.map +1 -0
  91. package/dist/infra/secrets-manager-client.js +26 -0
  92. package/dist/infra/secrets-manager-client.js.map +1 -0
  93. package/dist/infra/subprocess.d.ts +5 -0
  94. package/dist/infra/subprocess.d.ts.map +1 -0
  95. package/dist/infra/subprocess.js +26 -0
  96. package/dist/infra/subprocess.js.map +1 -0
  97. package/dist/infra/template-engine.d.ts +43 -0
  98. package/dist/infra/template-engine.d.ts.map +1 -0
  99. package/dist/infra/template-engine.js +233 -0
  100. package/dist/infra/template-engine.js.map +1 -0
  101. package/dist/infra/tofu-runner.d.ts +26 -0
  102. package/dist/infra/tofu-runner.d.ts.map +1 -0
  103. package/dist/infra/tofu-runner.js +210 -0
  104. package/dist/infra/tofu-runner.js.map +1 -0
  105. package/dist/infra/types.d.ts +69 -0
  106. package/dist/infra/types.d.ts.map +1 -0
  107. package/dist/infra/types.js +44 -0
  108. package/dist/infra/types.js.map +1 -0
  109. package/package.json +45 -0
@@ -0,0 +1,123 @@
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.resolveSourceRoot = resolveSourceRoot;
37
+ const fs = __importStar(require("fs-extra"));
38
+ const path = __importStar(require("path"));
39
+ const os = __importStar(require("os"));
40
+ const https = __importStar(require("https"));
41
+ const child_process_1 = require("child_process");
42
+ const monorepo_1 = require("./monorepo");
43
+ function getCliVersion() {
44
+ const pkg = require(path.join(__dirname, '..', '..', 'package.json'));
45
+ return pkg.version;
46
+ }
47
+ function getGitHubRepo() {
48
+ const pkg = require(path.join(__dirname, '..', '..', 'package.json'));
49
+ const url = pkg.repository?.url ?? '';
50
+ const match = url.match(/github\.com\/([^/]+)\/([^/.]+)/);
51
+ if (!match) {
52
+ throw new Error('Cannot determine GitHub repository from package.json "repository.url". ' +
53
+ 'Provide --source to use a local monorepo instead.');
54
+ }
55
+ return { owner: match[1], repo: match[2] };
56
+ }
57
+ function downloadFile(url, dest, redirects = 3) {
58
+ return new Promise((resolve, reject) => {
59
+ if (redirects < 0) {
60
+ return reject(new Error('Too many redirects'));
61
+ }
62
+ https.get(url, { headers: { 'User-Agent': 'fuel-cli' } }, (res) => {
63
+ if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
64
+ return downloadFile(res.headers.location, dest, redirects - 1).then(resolve, reject);
65
+ }
66
+ if (res.statusCode !== 200) {
67
+ return reject(new Error(`Download failed with status ${res.statusCode}: ${url}`));
68
+ }
69
+ const file = fs.createWriteStream(dest);
70
+ res.pipe(file);
71
+ file.on('finish', () => file.close(() => resolve()));
72
+ file.on('error', (err) => {
73
+ fs.removeSync(dest);
74
+ reject(err);
75
+ });
76
+ }).on('error', reject);
77
+ });
78
+ }
79
+ async function downloadTemplate(version) {
80
+ const { owner, repo } = getGitHubRepo();
81
+ const assetName = `fuel-template-v${version}.tar.gz`;
82
+ const url = `https://github.com/${owner}/${repo}/releases/download/v${version}/${assetName}`;
83
+ const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'fuel-template-'));
84
+ const tarPath = path.join(tmpDir, assetName);
85
+ console.log(`\n Downloading template v${version}...`);
86
+ try {
87
+ await downloadFile(url, tarPath);
88
+ }
89
+ catch (err) {
90
+ await fs.remove(tmpDir);
91
+ throw new Error(`Could not download template for v${version}.\n` +
92
+ ` URL: ${url}\n` +
93
+ ` Ensure this version has a GitHub release with the template asset.\n` +
94
+ ` Or use --source to point to a local monorepo.\n` +
95
+ ` ${err instanceof Error ? err.message : String(err)}`);
96
+ }
97
+ const extractDir = path.join(tmpDir, 'template');
98
+ await fs.mkdirp(extractDir);
99
+ (0, child_process_1.execSync)(`tar xzf "${tarPath}" -C "${extractDir}"`, { stdio: 'pipe' });
100
+ await fs.remove(tarPath);
101
+ console.log(' Template downloaded and extracted.\n');
102
+ return {
103
+ dir: extractDir,
104
+ cleanup: () => fs.remove(tmpDir),
105
+ };
106
+ }
107
+ async function resolveSourceRoot(options) {
108
+ if (options.source) {
109
+ const sourceRoot = path.resolve(options.source);
110
+ if (!(await fs.pathExists(sourceRoot))) {
111
+ throw new Error(`Source directory not found: ${sourceRoot}`);
112
+ }
113
+ return { sourceRoot, mode: 'local' };
114
+ }
115
+ const localRoot = await (0, monorepo_1.findMonorepoRoot)(process.cwd());
116
+ if (localRoot) {
117
+ return { sourceRoot: localRoot, mode: 'local' };
118
+ }
119
+ const version = getCliVersion();
120
+ const { dir, cleanup } = await downloadTemplate(version);
121
+ return { sourceRoot: dir, mode: 'remote', cleanup };
122
+ }
123
+ //# sourceMappingURL=template-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-source.js","sourceRoot":"","sources":["../../src/engines/template-source.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6FA,8CAmBC;AAhHD,6CAA8B;AAC9B,2CAA4B;AAC5B,uCAAwB;AACxB,6CAA8B;AAC9B,iDAAwC;AACxC,yCAA6C;AAQ7C,SAAS,aAAa;IACpB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAA;IACrE,OAAO,GAAG,CAAC,OAAO,CAAA;AACpB,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAA;IACrE,MAAM,GAAG,GAAW,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,EAAE,CAAA;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,yEAAyE;YACzE,mDAAmD,CACpD,CAAA;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AAC5C,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,IAAY,EAAE,SAAS,GAAG,CAAC;IAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAChD,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;YAChE,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC5F,OAAO,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACtF,CAAC;YAED,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC3B,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC,CAAA;YACnF,CAAC;YAED,MAAM,IAAI,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACvC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACd,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;YACpD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACvB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;gBACnB,MAAM,CAAC,GAAG,CAAC,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC7C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,CAAA;IACvC,MAAM,SAAS,GAAG,kBAAkB,OAAO,SAAS,CAAA;IACpD,MAAM,GAAG,GAAG,sBAAsB,KAAK,IAAI,IAAI,uBAAuB,OAAO,IAAI,SAAS,EAAE,CAAA;IAE5F,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAA;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAE5C,OAAO,CAAC,GAAG,CAAC,6BAA6B,OAAO,KAAK,CAAC,CAAA;IAEtD,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACvB,MAAM,IAAI,KAAK,CACb,oCAAoC,OAAO,KAAK;YAChD,UAAU,GAAG,IAAI;YACjB,uEAAuE;YACvE,mDAAmD;YACnD,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACxD,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAChD,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAC3B,IAAA,wBAAQ,EAAC,YAAY,OAAO,SAAS,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;IACtE,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAExB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAA;IAErD,OAAO;QACL,GAAG,EAAE,UAAU;QACf,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;KACjC,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAC,OAEvC;IACC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/C,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAA;QAC9D,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IACtC,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,IAAA,2BAAgB,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IACvD,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IACjD,CAAC;IAED,MAAM,OAAO,GAAG,aAAa,EAAE,CAAA;IAC/B,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACxD,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;AACrD,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { createApp } from './commands/create-app';
2
+ export { resolveModules, computeModulesToRemove } from './engines/dependencies';
3
+ export { computePathsToRemove, removeModulePaths } from './engines/convention';
4
+ export { findMonorepoRoot } from './engines/monorepo';
5
+ export { resolveSourceRoot } from './engines/template-source';
6
+ export type { SourceResolution } from './engines/template-source';
7
+ export type { FuelModulesConfig, ModuleConfig } from './engines/dependencies';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveSourceRoot = exports.findMonorepoRoot = exports.removeModulePaths = exports.computePathsToRemove = exports.computeModulesToRemove = exports.resolveModules = exports.createApp = void 0;
4
+ var create_app_1 = require("./commands/create-app");
5
+ Object.defineProperty(exports, "createApp", { enumerable: true, get: function () { return create_app_1.createApp; } });
6
+ var dependencies_1 = require("./engines/dependencies");
7
+ Object.defineProperty(exports, "resolveModules", { enumerable: true, get: function () { return dependencies_1.resolveModules; } });
8
+ Object.defineProperty(exports, "computeModulesToRemove", { enumerable: true, get: function () { return dependencies_1.computeModulesToRemove; } });
9
+ var convention_1 = require("./engines/convention");
10
+ Object.defineProperty(exports, "computePathsToRemove", { enumerable: true, get: function () { return convention_1.computePathsToRemove; } });
11
+ Object.defineProperty(exports, "removeModulePaths", { enumerable: true, get: function () { return convention_1.removeModulePaths; } });
12
+ var monorepo_1 = require("./engines/monorepo");
13
+ Object.defineProperty(exports, "findMonorepoRoot", { enumerable: true, get: function () { return monorepo_1.findMonorepoRoot; } });
14
+ var template_source_1 = require("./engines/template-source");
15
+ Object.defineProperty(exports, "resolveSourceRoot", { enumerable: true, get: function () { return template_source_1.resolveSourceRoot; } });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,oDAAkD;AAAzC,uGAAA,SAAS,OAAA;AAClB,uDAAgF;AAAvE,8GAAA,cAAc,OAAA;AAAE,sHAAA,sBAAsB,OAAA;AAC/C,mDAA+E;AAAtE,kHAAA,oBAAoB,OAAA;AAAE,+GAAA,iBAAiB,OAAA;AAChD,+CAAsD;AAA7C,4GAAA,gBAAgB,OAAA;AACzB,6DAA8D;AAArD,oHAAA,iBAAiB,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { InfraConfig } from './types';
2
+ export declare function parseInfraConfig(raw: unknown): InfraConfig;
3
+ export declare function loadInfraConfig(configPath: string): Promise<InfraConfig>;
4
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/infra/config-loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,WAAW,EAAE,MAAM,SAAS,CAAA;AAExD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,CAS1D;AAED,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAM9E"}
@@ -0,0 +1,57 @@
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.parseInfraConfig = parseInfraConfig;
37
+ exports.loadInfraConfig = loadInfraConfig;
38
+ const fs = __importStar(require("fs-extra"));
39
+ const types_1 = require("./types");
40
+ function parseInfraConfig(raw) {
41
+ const result = types_1.InfraConfigSchema.safeParse(raw);
42
+ if (!result.success) {
43
+ const messages = result.error.issues
44
+ .map((issue) => ` ${issue.path.join('.')}: ${issue.message}`)
45
+ .join('\n');
46
+ throw new Error(`Invalid config.json:\n${messages}`);
47
+ }
48
+ return result.data;
49
+ }
50
+ async function loadInfraConfig(configPath) {
51
+ if (!(await fs.pathExists(configPath))) {
52
+ throw new Error(`Config file not found: ${configPath}`);
53
+ }
54
+ const raw = await fs.readJson(configPath);
55
+ return parseInfraConfig(raw);
56
+ }
57
+ //# sourceMappingURL=config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/infra/config-loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,4CASC;AAED,0CAMC;AApBD,6CAA8B;AAC9B,mCAAwD;AAExD,SAAgB,gBAAgB,CAAC,GAAY;IAC3C,MAAM,MAAM,GAAG,yBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aACjC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aAC7D,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,UAAkB;IACtD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAA;IACzD,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IACzC,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { InfraConfig, Credentials } from './types';
2
+ export interface FuelConfig extends InfraConfig {
3
+ seed: string;
4
+ aws_region?: string;
5
+ github_org?: string;
6
+ }
7
+ export declare function generateSeed(): string;
8
+ export declare function writeFuelConfig(projectRoot: string, config: InfraConfig, projectName?: string, existingSeed?: string, credentials?: Credentials): Promise<FuelConfig>;
9
+ //# sourceMappingURL=config-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../../src/infra/config-writer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAElD,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,UAAU,CAAC,CAiBrB"}
@@ -0,0 +1,58 @@
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.generateSeed = generateSeed;
37
+ exports.writeFuelConfig = writeFuelConfig;
38
+ const fs = __importStar(require("fs-extra"));
39
+ const path = __importStar(require("path"));
40
+ const crypto = __importStar(require("crypto"));
41
+ function generateSeed() {
42
+ return crypto.randomBytes(12).toString('hex'); // 24 hex chars
43
+ }
44
+ async function writeFuelConfig(projectRoot, config, projectName, existingSeed, credentials) {
45
+ const seed = existingSeed ?? generateSeed();
46
+ const fuelConfig = {
47
+ ...config,
48
+ ...(projectName ? { name: projectName } : {}),
49
+ seed,
50
+ ...(credentials ? {
51
+ aws_region: credentials.AWS_REGION,
52
+ github_org: credentials.GITHUB_ORGANIZATION,
53
+ } : {}),
54
+ };
55
+ await fs.writeJson(path.join(projectRoot, 'fuel.config.json'), fuelConfig, { spaces: 2 });
56
+ return fuelConfig;
57
+ }
58
+ //# sourceMappingURL=config-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../src/infra/config-writer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,oCAEC;AAED,0CAuBC;AAtCD,6CAA8B;AAC9B,2CAA4B;AAC5B,+CAAgC;AAShC,SAAgB,YAAY;IAC1B,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA,CAAC,eAAe;AAC/D,CAAC;AAEM,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,MAAmB,EACnB,WAAoB,EACpB,YAAqB,EACrB,WAAyB;IAEzB,MAAM,IAAI,GAAG,YAAY,IAAI,YAAY,EAAE,CAAA;IAC3C,MAAM,UAAU,GAAe;QAC7B,GAAG,MAAM;QACT,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,IAAI;QACJ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YAChB,UAAU,EAAE,WAAW,CAAC,UAAU;YAClC,UAAU,EAAE,WAAW,CAAC,mBAAmB;SAC5C,CAAC,CAAC,CAAC,EAAE,CAAC;KACR,CAAA;IACD,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAC1C,UAAU,EACV,EAAE,MAAM,EAAE,CAAC,EAAE,CACd,CAAA;IACD,OAAO,UAAU,CAAA;AACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Credentials } from './types';
2
+ export declare function resolveCredentials(searchDir?: string): Promise<Credentials>;
3
+ //# sourceMappingURL=credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/infra/credentials.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA2C,MAAM,SAAS,CAAA;AAe9E,wBAAsB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAmCjF"}
@@ -0,0 +1,74 @@
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.resolveCredentials = resolveCredentials;
37
+ const path = __importStar(require("path"));
38
+ const fs = __importStar(require("fs-extra"));
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(', ')}`);
45
+ }
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]]));
53
+ }
54
+ // Priority 2: .fuel-credentials JSON file in searchDir (or CWD if no searchDir)
55
+ const credPath = searchDir
56
+ ? path.join(searchDir, '.fuel-credentials')
57
+ : 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
62
+ const cwd = process.cwd();
63
+ if (searchDir && path.resolve(searchDir) !== cwd) {
64
+ const cwdCredPath = path.resolve('.fuel-credentials');
65
+ if (await fs.pathExists(cwdCredPath)) {
66
+ return readCredentialsFile(cwdCredPath);
67
+ }
68
+ }
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.`);
73
+ }
74
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +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"}
@@ -0,0 +1,9 @@
1
+ export type ComposeCommand = 'docker compose' | 'docker-compose';
2
+ export interface DockerDependencyResult {
3
+ composeCommand: ComposeCommand;
4
+ }
5
+ export declare const detectComposeCommand: () => ComposeCommand;
6
+ export declare const assertDockerCliInstalled: () => void;
7
+ export declare const assertDockerDaemonRunning: () => void;
8
+ export declare const assertDockerDependencies: () => DockerDependencyResult;
9
+ //# sourceMappingURL=dependency-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-checker.d.ts","sourceRoot":"","sources":["../../src/infra/dependency-checker.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;AAEhE,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,cAAc,CAAA;CAC/B;AAaD,eAAO,MAAM,oBAAoB,QAAO,cAMvC,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,IAM3C,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,IAM5C,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAO,sBAK3C,CAAA"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertDockerDependencies = exports.assertDockerDaemonRunning = exports.assertDockerCliInstalled = exports.detectComposeCommand = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const run = (command) => (0, child_process_1.execSync)(command, { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'pipe'] });
6
+ const tryRun = (command) => {
7
+ try {
8
+ return { ok: true, stdout: run(command) };
9
+ }
10
+ catch {
11
+ return { ok: false };
12
+ }
13
+ };
14
+ const detectComposeCommand = () => {
15
+ if (tryRun('docker compose version').ok)
16
+ return 'docker compose';
17
+ if (tryRun('docker-compose --version').ok)
18
+ return 'docker-compose';
19
+ throw new Error('Docker Compose not found. Install Docker Desktop (recommended) or Docker Compose: https://docs.docker.com/compose/install/');
20
+ };
21
+ exports.detectComposeCommand = detectComposeCommand;
22
+ const assertDockerCliInstalled = () => {
23
+ if (!tryRun('docker --version').ok) {
24
+ throw new Error('Docker is not installed. Install Docker Desktop: https://docs.docker.com/get-docker/');
25
+ }
26
+ };
27
+ exports.assertDockerCliInstalled = assertDockerCliInstalled;
28
+ const assertDockerDaemonRunning = () => {
29
+ if (!tryRun('docker info').ok) {
30
+ throw new Error('Docker daemon is not running. Start Docker Desktop (or your Docker service) and try again.');
31
+ }
32
+ };
33
+ exports.assertDockerDaemonRunning = assertDockerDaemonRunning;
34
+ const assertDockerDependencies = () => {
35
+ (0, exports.assertDockerCliInstalled)();
36
+ (0, exports.assertDockerDaemonRunning)();
37
+ const composeCommand = (0, exports.detectComposeCommand)();
38
+ return { composeCommand };
39
+ };
40
+ exports.assertDockerDependencies = assertDockerDependencies;
41
+ //# sourceMappingURL=dependency-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-checker.js","sourceRoot":"","sources":["../../src/infra/dependency-checker.ts"],"names":[],"mappings":";;;AAAA,iDAAwC;AAQxC,MAAM,GAAG,GAAG,CAAC,OAAe,EAAU,EAAE,CACtC,IAAA,wBAAQ,EAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;AAE7E,MAAM,MAAM,GAAG,CAAC,OAAe,EAAgD,EAAE;IAC/E,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAA;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;IACtB,CAAC;AACH,CAAC,CAAA;AAEM,MAAM,oBAAoB,GAAG,GAAmB,EAAE;IACvD,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC,EAAE;QAAE,OAAO,gBAAgB,CAAA;IAChE,IAAI,MAAM,CAAC,0BAA0B,CAAC,CAAC,EAAE;QAAE,OAAO,gBAAgB,CAAA;IAClE,MAAM,IAAI,KAAK,CACb,4HAA4H,CAC7H,CAAA;AACH,CAAC,CAAA;AANY,QAAA,oBAAoB,wBAMhC;AAEM,MAAM,wBAAwB,GAAG,GAAS,EAAE;IACjD,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,sFAAsF,CACvF,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AANY,QAAA,wBAAwB,4BAMpC;AAEM,MAAM,yBAAyB,GAAG,GAAS,EAAE;IAClD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAA;IACH,CAAC;AACH,CAAC,CAAA;AANY,QAAA,yBAAyB,6BAMrC;AAEM,MAAM,wBAAwB,GAAG,GAA2B,EAAE;IACnE,IAAA,gCAAwB,GAAE,CAAA;IAC1B,IAAA,iCAAyB,GAAE,CAAA;IAC3B,MAAM,cAAc,GAAG,IAAA,4BAAoB,GAAE,CAAA;IAC7C,OAAO,EAAE,cAAc,EAAE,CAAA;AAC3B,CAAC,CAAA;AALY,QAAA,wBAAwB,4BAKpC"}
@@ -0,0 +1,2 @@
1
+ export declare function wireGitRemote(projectDir: string, repoUrl: string): Promise<void>;
2
+ //# sourceMappingURL=git-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-client.d.ts","sourceRoot":"","sources":["../../src/infra/git-client.ts"],"names":[],"mappings":"AAeA,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtF"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wireGitRemote = wireGitRemote;
4
+ const child_process_1 = require("child_process");
5
+ function spawnSimple(cmd, args, cwd) {
6
+ return new Promise((resolve) => {
7
+ const proc = (0, child_process_1.spawn)(cmd, args, { cwd, stdio: 'inherit' });
8
+ proc.on('close', (code) => {
9
+ resolve({ code: code ?? 1 });
10
+ });
11
+ });
12
+ }
13
+ async function wireGitRemote(projectDir, repoUrl) {
14
+ const setUrlResult = await spawnSimple('git', ['remote', 'set-url', 'origin', repoUrl], projectDir);
15
+ if (setUrlResult.code !== 0) {
16
+ const addResult = await spawnSimple('git', ['remote', 'add', 'origin', repoUrl], projectDir);
17
+ if (addResult.code !== 0) {
18
+ throw new Error(`Failed to set git remote origin to ${repoUrl}`);
19
+ }
20
+ }
21
+ }
22
+ //# sourceMappingURL=git-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-client.js","sourceRoot":"","sources":["../../src/infra/git-client.ts"],"names":[],"mappings":";;AAeA,sCAUC;AAzBD,iDAAqC;AAErC,SAAS,WAAW,CAClB,GAAW,EACX,IAAc,EACd,GAAW;IAEX,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QACxD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;YACvC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,UAAkB,EAAE,OAAe;IACrE,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAA;IAEnG,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,UAAU,CAAC,CAAA;QAE5F,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function setRepoSecret(token: string, owner: string, repo: string, secretName: string, secretValue: string): Promise<void>;
2
+ export declare function setRepoSecrets(token: string, owner: string, repo: string, secrets: Record<string, string>): Promise<void>;
3
+ //# sourceMappingURL=github-secrets-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-secrets-client.d.ts","sourceRoot":"","sources":["../../src/infra/github-secrets-client.ts"],"names":[],"mappings":"AAGA,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAyBf;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.setRepoSecret = setRepoSecret;
7
+ exports.setRepoSecrets = setRepoSecrets;
8
+ const rest_1 = require("@octokit/rest");
9
+ const libsodium_wrappers_1 = __importDefault(require("libsodium-wrappers"));
10
+ async function setRepoSecret(token, owner, repo, secretName, secretValue) {
11
+ await libsodium_wrappers_1.default.ready;
12
+ const octokit = new rest_1.Octokit({ auth: token });
13
+ // Fetch the repo's public key for secret encryption
14
+ const { data: keyData } = await octokit.rest.actions.getRepoPublicKey({
15
+ owner,
16
+ repo,
17
+ });
18
+ // Encrypt the secret value using libsodium crypto_box_seal
19
+ const binkey = libsodium_wrappers_1.default.from_base64(keyData.key, libsodium_wrappers_1.default.base64_variants.ORIGINAL);
20
+ const binsec = libsodium_wrappers_1.default.from_string(secretValue);
21
+ const encBytes = libsodium_wrappers_1.default.crypto_box_seal(binsec, binkey);
22
+ const encryptedValue = libsodium_wrappers_1.default.to_base64(encBytes, libsodium_wrappers_1.default.base64_variants.ORIGINAL);
23
+ // Upload the encrypted secret
24
+ await octokit.rest.actions.createOrUpdateRepoSecret({
25
+ owner,
26
+ repo,
27
+ secret_name: secretName,
28
+ encrypted_value: encryptedValue,
29
+ key_id: keyData.key_id,
30
+ });
31
+ }
32
+ async function setRepoSecrets(token, owner, repo, secrets) {
33
+ for (const [name, value] of Object.entries(secrets)) {
34
+ await setRepoSecret(token, owner, repo, name, value);
35
+ }
36
+ }
37
+ //# sourceMappingURL=github-secrets-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-secrets-client.js","sourceRoot":"","sources":["../../src/infra/github-secrets-client.ts"],"names":[],"mappings":";;;;;AAGA,sCA+BC;AAED,wCASC;AA7CD,wCAAuC;AACvC,4EAAuC;AAEhC,KAAK,UAAU,aAAa,CACjC,KAAa,EACb,KAAa,EACb,IAAY,EACZ,UAAkB,EAClB,WAAmB;IAEnB,MAAM,4BAAM,CAAC,KAAK,CAAA;IAElB,MAAM,OAAO,GAAG,IAAI,cAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAE5C,oDAAoD;IACpD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACpE,KAAK;QACL,IAAI;KACL,CAAC,CAAA;IAEF,2DAA2D;IAC3D,MAAM,MAAM,GAAG,4BAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,4BAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;IAC/E,MAAM,MAAM,GAAG,4BAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,4BAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvD,MAAM,cAAc,GAAG,4BAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,4BAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;IAElF,8BAA8B;IAC9B,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC;QAClD,KAAK;QACL,IAAI;QACJ,WAAW,EAAE,UAAU;QACvB,eAAe,EAAE,cAAc;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAA;AACJ,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,KAAa,EACb,IAAY,EACZ,OAA+B;IAE/B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IACtD,CAAC;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { InfraConfig, Credentials } from './types';
2
+ export interface OrchestratorOptions {
3
+ skipCompensation?: boolean;
4
+ planOnly?: boolean;
5
+ }
6
+ export declare function runInfraOrchestrator(targetRoot: string, appName: string, config: InfraConfig, credentials: Credentials, options?: OrchestratorOptions): Promise<void>;
7
+ //# sourceMappingURL=orchestrator.d.ts.map
@@ -0,0 +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;AA8FlD,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA8Ef"}