@factiii/stack 0.1.46 → 0.1.48

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 (49) hide show
  1. package/dist/cli/deploy.d.ts +3 -3
  2. package/dist/cli/deploy.d.ts.map +1 -1
  3. package/dist/cli/deploy.js +30 -3
  4. package/dist/cli/deploy.js.map +1 -1
  5. package/dist/cli/fix.d.ts +2 -2
  6. package/dist/cli/fix.js +2 -2
  7. package/dist/cli/scan.d.ts +6 -7
  8. package/dist/cli/scan.d.ts.map +1 -1
  9. package/dist/cli/scan.js +6 -7
  10. package/dist/cli/scan.js.map +1 -1
  11. package/dist/plugins/frameworks/prisma-trpc/index.d.ts.map +1 -1
  12. package/dist/plugins/frameworks/prisma-trpc/index.js +2 -1
  13. package/dist/plugins/frameworks/prisma-trpc/index.js.map +1 -1
  14. package/dist/plugins/pipelines/factiii/index.d.ts +0 -4
  15. package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
  16. package/dist/plugins/pipelines/factiii/index.js +0 -6
  17. package/dist/plugins/pipelines/factiii/index.js.map +1 -1
  18. package/dist/plugins/pipelines/factiii/staging.d.ts.map +1 -1
  19. package/dist/plugins/pipelines/factiii/staging.js +2 -1
  20. package/dist/plugins/pipelines/factiii/staging.js.map +1 -1
  21. package/dist/plugins/pipelines/factiii/utils/workflows.d.ts +0 -4
  22. package/dist/plugins/pipelines/factiii/utils/workflows.d.ts.map +1 -1
  23. package/dist/plugins/pipelines/factiii/utils/workflows.js +0 -36
  24. package/dist/plugins/pipelines/factiii/utils/workflows.js.map +1 -1
  25. package/dist/plugins/servers/mac/scanfix/config.d.ts.map +1 -1
  26. package/dist/plugins/servers/mac/scanfix/config.js +2 -1
  27. package/dist/plugins/servers/mac/scanfix/config.js.map +1 -1
  28. package/dist/plugins/servers/mac/scanfix/containers.d.ts.map +1 -1
  29. package/dist/plugins/servers/mac/scanfix/containers.js +3 -2
  30. package/dist/plugins/servers/mac/scanfix/containers.js.map +1 -1
  31. package/dist/utils/git-repo-info.d.ts +15 -0
  32. package/dist/utils/git-repo-info.d.ts.map +1 -0
  33. package/dist/utils/git-repo-info.js +34 -0
  34. package/dist/utils/git-repo-info.js.map +1 -0
  35. package/dist/utils/github-status.d.ts +3 -6
  36. package/dist/utils/github-status.d.ts.map +1 -1
  37. package/dist/utils/github-status.js +3 -3
  38. package/dist/utils/github-status.js.map +1 -1
  39. package/dist/utils/secret-prompts.d.ts.map +1 -1
  40. package/dist/utils/secret-prompts.js +17 -26
  41. package/dist/utils/secret-prompts.js.map +1 -1
  42. package/dist/utils/ssh-deploy.d.ts.map +1 -1
  43. package/dist/utils/ssh-deploy.js +16 -26
  44. package/dist/utils/ssh-deploy.js.map +1 -1
  45. package/package.json +1 -1
  46. package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts +0 -65
  47. package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts.map +0 -1
  48. package/dist/plugins/pipelines/factiii/github-secrets-store.js +0 -221
  49. package/dist/plugins/pipelines/factiii/github-secrets-store.js.map +0 -1
@@ -93,27 +93,22 @@ class SSHDeploy {
93
93
  */
94
94
  sshExec(command) {
95
95
  const keyPath = this.keyPath ?? this.setupSSHKey();
96
- // Build SSH command with strict options
97
- const sshCmd = [
98
- 'ssh',
99
- '-i', `"${keyPath}"`,
96
+ const result = (0, child_process_1.spawnSync)('ssh', [
97
+ '-i', keyPath,
100
98
  '-o', 'StrictHostKeyChecking=no',
101
99
  '-o', 'UserKnownHostsFile=/dev/null',
102
100
  '-o', 'BatchMode=yes',
103
101
  '-o', 'ConnectTimeout=30',
104
- `"${this.user}@${this.host}"`,
105
- `"${command.replace(/"/g, '\\"')}"`,
106
- ].join(' ');
107
- try {
108
- return (0, child_process_1.execSync)(sshCmd, {
109
- encoding: 'utf8',
110
- stdio: ['pipe', 'pipe', 'pipe'],
111
- });
112
- }
113
- catch (e) {
114
- const error = e;
115
- throw new Error(`SSH command failed: ${error.stderr || error.message}`);
102
+ this.user + '@' + this.host,
103
+ command,
104
+ ], {
105
+ encoding: 'utf8',
106
+ stdio: ['pipe', 'pipe', 'pipe'],
107
+ });
108
+ if (result.status !== 0) {
109
+ throw new Error('SSH command failed: ' + (result.stderr || 'exit code ' + result.status));
116
110
  }
111
+ return result.stdout ?? '';
117
112
  }
118
113
  /**
119
114
  * Test SSH connection to server
@@ -164,16 +159,11 @@ class SSHDeploy {
164
159
  this.setupSSHKey();
165
160
  const envContent = this.envToFileContent(envVars);
166
161
  const envFileName = `.env.${stage}`;
167
- const factiiiDir = `\\$HOME/.factiii/${this.repoName}`;
162
+ const factiiiDir = `$HOME/.factiii/${this.repoName}`;
168
163
  const envFilePath = `${factiiiDir}/${envFileName}`;
169
164
  // Create directory if it doesn't exist, then write the file
170
- // Use heredoc to safely pass content with special characters
171
- const escapedContent = envContent
172
- .replace(/\\/g, '\\\\')
173
- .replace(/'/g, "'\\''");
174
- const command = `mkdir -p ${factiiiDir} && cat > ${envFilePath} << 'FACTIII_ENV_EOF'
175
- ${envContent}FACTIII_ENV_EOF
176
- chmod 600 ${envFilePath}`;
165
+ // Quoted heredoc delimiter ('FACTIII_ENV_EOF') prevents shell expansion
166
+ const command = 'mkdir -p ' + factiiiDir + ' && cat > ' + envFilePath + " << 'FACTIII_ENV_EOF'\n" + envContent + 'FACTIII_ENV_EOF\nchmod 600 ' + envFilePath;
177
167
  this.sshExec(command);
178
168
  const keyCount = Object.keys(envVars).length;
179
169
  return {
@@ -221,7 +211,7 @@ chmod 600 ${envFilePath}`;
221
211
  try {
222
212
  this.setupSSHKey();
223
213
  const envFileName = `.env.${stage}`;
224
- const factiiiDir = `\\$HOME/.factiii/${this.repoName}`;
214
+ const factiiiDir = `$HOME/.factiii/${this.repoName}`;
225
215
  const envFilePath = `${factiiiDir}/${envFileName}`;
226
216
  const command = `test -f ${envFilePath} && echo "exists" || echo "missing"`;
227
217
  const result = this.sshExec(command).trim();
@@ -241,7 +231,7 @@ chmod 600 ${envFilePath}`;
241
231
  try {
242
232
  this.setupSSHKey();
243
233
  const envFileName = `.env.${stage}`;
244
- const factiiiDir = `\\$HOME/.factiii/${this.repoName}`;
234
+ const factiiiDir = `$HOME/.factiii/${this.repoName}`;
245
235
  const envFilePath = `${factiiiDir}/${envFileName}`;
246
236
  // Cross-platform: macOS uses `stat -f %m`, Linux uses `stat -c %Y`
247
237
  const command = `stat -f %m ${envFilePath} 2>/dev/null || stat -c %Y ${envFilePath} 2>/dev/null || echo "missing"`;
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-deploy.js","sourceRoot":"","sources":["../../src/utils/ssh-deploy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ssh-deploy.js","sourceRoot":"","sources":["../../src/utils/ssh-deploy.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@factiii/stack",
3
- "version": "0.1.46",
3
+ "version": "0.1.48",
4
4
  "description": "Infrastructure management package for deploying services to servers",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,65 +0,0 @@
1
- /**
2
- * GitHub Secrets Store
3
- *
4
- * Utility for managing GitHub repository secrets via the GitHub API.
5
- * Used by the pipeline plugin and secrets CLI command.
6
- */
7
- interface RepoInfo {
8
- owner: string;
9
- repo: string;
10
- }
11
- interface SetSecretResult {
12
- success: boolean;
13
- error?: string;
14
- }
15
- interface CheckSecretsResult {
16
- existing?: string[];
17
- status?: Record<string, boolean>;
18
- missing?: string[];
19
- error?: string;
20
- }
21
- interface PublicKeyResponse {
22
- key: string;
23
- key_id: string;
24
- }
25
- interface GitHubSecretsStoreConfig {
26
- token?: string;
27
- owner?: string;
28
- repo?: string;
29
- }
30
- export declare class GitHubSecretsStore {
31
- private token?;
32
- private owner?;
33
- private repo?;
34
- constructor(config?: GitHubSecretsStoreConfig);
35
- /**
36
- * Get repository info from git remote
37
- */
38
- static getRepoInfo(): RepoInfo | null;
39
- /**
40
- * Make GitHub API request
41
- */
42
- private request;
43
- /**
44
- * Get repository public key for encrypting secrets
45
- */
46
- getPublicKey(): Promise<PublicKeyResponse>;
47
- /**
48
- * Encrypt a secret value using the repository's public key
49
- */
50
- encryptSecret(value: string, _publicKey: string): string;
51
- /**
52
- * Set a secret in the repository
53
- */
54
- setSecret(name: string, value: string): Promise<SetSecretResult>;
55
- /**
56
- * Check which secrets exist
57
- */
58
- checkSecrets(secretNames: string[]): Promise<CheckSecretsResult>;
59
- /**
60
- * Delete a secret
61
- */
62
- deleteSecret(name: string): Promise<SetSecretResult>;
63
- }
64
- export {};
65
- //# sourceMappingURL=github-secrets-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github-secrets-store.d.ts","sourceRoot":"","sources":["../../../../src/plugins/pipelines/factiii/github-secrets-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,IAAI,CAAC,CAAS;gBAEV,MAAM,GAAE,wBAA6B;IAejD;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,QAAQ,GAAG,IAAI;IAuBrC;;OAEG;YACW,OAAO;IAwDrB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAKhD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAQxD;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAwBtE;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6BtE;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAY3D"}
@@ -1,221 +0,0 @@
1
- "use strict";
2
- /**
3
- * GitHub Secrets Store
4
- *
5
- * Utility for managing GitHub repository secrets via the GitHub API.
6
- * Used by the pipeline plugin and secrets CLI command.
7
- */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
- Object.defineProperty(o, "default", { enumerable: true, value: v });
21
- }) : function(o, v) {
22
- o["default"] = v;
23
- });
24
- var __importStar = (this && this.__importStar) || (function () {
25
- var ownKeys = function(o) {
26
- ownKeys = Object.getOwnPropertyNames || function (o) {
27
- var ar = [];
28
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
- return ar;
30
- };
31
- return ownKeys(o);
32
- };
33
- return function (mod) {
34
- if (mod && mod.__esModule) return mod;
35
- var result = {};
36
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
- __setModuleDefault(result, mod);
38
- return result;
39
- };
40
- })();
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.GitHubSecretsStore = void 0;
43
- const child_process_1 = require("child_process");
44
- const https = __importStar(require("https"));
45
- class GitHubSecretsStore {
46
- token;
47
- owner;
48
- repo;
49
- constructor(config = {}) {
50
- this.token = config.token ?? process.env.GITHUB_TOKEN;
51
- this.owner = config.owner;
52
- this.repo = config.repo;
53
- // Auto-detect from git if not provided
54
- if (!this.owner || !this.repo) {
55
- const repoInfo = GitHubSecretsStore.getRepoInfo();
56
- if (repoInfo) {
57
- this.owner = this.owner ?? repoInfo.owner;
58
- this.repo = this.repo ?? repoInfo.repo;
59
- }
60
- }
61
- }
62
- /**
63
- * Get repository info from git remote
64
- */
65
- static getRepoInfo() {
66
- try {
67
- const remote = (0, child_process_1.execSync)('git config --get remote.origin.url', {
68
- encoding: 'utf8',
69
- stdio: ['pipe', 'pipe', 'ignore'],
70
- }).trim();
71
- // Parse GitHub URL (supports both HTTPS and SSH)
72
- const match = remote.match(/github\.com[:/]([^/]+)\/(.+?)(\.git)?$/);
73
- if (match && match[1] && match[2]) {
74
- return {
75
- owner: match[1],
76
- repo: match[2],
77
- };
78
- }
79
- return null;
80
- }
81
- catch {
82
- return null;
83
- }
84
- }
85
- /**
86
- * Make GitHub API request
87
- */
88
- async request(method, urlPath, body = null) {
89
- return new Promise((resolve, reject) => {
90
- const options = {
91
- hostname: 'api.github.com',
92
- port: 443,
93
- path: urlPath,
94
- method: method,
95
- headers: {
96
- Authorization: `Bearer ${this.token}`,
97
- 'User-Agent': 'factiii-stack',
98
- Accept: 'application/vnd.github+json',
99
- 'X-GitHub-Api-Version': '2022-11-28',
100
- },
101
- };
102
- if (body) {
103
- const bodyStr = JSON.stringify(body);
104
- options.headers['Content-Type'] = 'application/json';
105
- options.headers['Content-Length'] =
106
- Buffer.byteLength(bodyStr).toString();
107
- }
108
- const req = https.request(options, (res) => {
109
- let data = '';
110
- res.on('data', (chunk) => {
111
- data += chunk.toString();
112
- });
113
- res.on('end', () => {
114
- if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
115
- try {
116
- resolve(data ? JSON.parse(data) : {});
117
- }
118
- catch {
119
- resolve({ raw: data });
120
- }
121
- }
122
- else {
123
- reject(new Error(`GitHub API error: ${res.statusCode} ${data}`));
124
- }
125
- });
126
- });
127
- req.on('error', reject);
128
- if (body) {
129
- req.write(JSON.stringify(body));
130
- }
131
- req.end();
132
- });
133
- }
134
- /**
135
- * Get repository public key for encrypting secrets
136
- */
137
- async getPublicKey() {
138
- const urlPath = `/repos/${this.owner}/${this.repo}/actions/secrets/public-key`;
139
- return await this.request('GET', urlPath);
140
- }
141
- /**
142
- * Encrypt a secret value using the repository's public key
143
- */
144
- encryptSecret(value, _publicKey) {
145
- // Convert the public key from base64
146
- // Note: This uses Node's crypto which may not be 100% compatible with libsodium
147
- // For production, consider using the @octokit/core library with proper libsodium
148
- // For now, return base64 encoded value (GitHub API will handle encryption)
149
- return Buffer.from(value).toString('base64');
150
- }
151
- /**
152
- * Set a secret in the repository
153
- */
154
- async setSecret(name, value) {
155
- try {
156
- // Get public key
157
- const { key, key_id } = await this.getPublicKey();
158
- // Encrypt the value
159
- const encrypted = this.encryptSecret(value, key);
160
- // Set the secret
161
- const urlPath = `/repos/${this.owner}/${this.repo}/actions/secrets/${name}`;
162
- await this.request('PUT', urlPath, {
163
- encrypted_value: encrypted,
164
- key_id: key_id,
165
- });
166
- return { success: true };
167
- }
168
- catch (error) {
169
- return {
170
- success: false,
171
- error: error instanceof Error ? error.message : String(error),
172
- };
173
- }
174
- }
175
- /**
176
- * Check which secrets exist
177
- */
178
- async checkSecrets(secretNames) {
179
- try {
180
- const urlPath = `/repos/${this.owner}/${this.repo}/actions/secrets`;
181
- const response = await this.request('GET', urlPath);
182
- const existing = new Set(response.secrets?.map((s) => s.name) ?? []);
183
- const status = {};
184
- const missing = [];
185
- for (const name of secretNames) {
186
- status[name] = existing.has(name);
187
- if (!existing.has(name)) {
188
- missing.push(name);
189
- }
190
- }
191
- return {
192
- existing: Array.from(existing),
193
- status,
194
- missing,
195
- };
196
- }
197
- catch (error) {
198
- return {
199
- error: error instanceof Error ? error.message : String(error),
200
- };
201
- }
202
- }
203
- /**
204
- * Delete a secret
205
- */
206
- async deleteSecret(name) {
207
- try {
208
- const urlPath = `/repos/${this.owner}/${this.repo}/actions/secrets/${name}`;
209
- await this.request('DELETE', urlPath);
210
- return { success: true };
211
- }
212
- catch (error) {
213
- return {
214
- success: false,
215
- error: error instanceof Error ? error.message : String(error),
216
- };
217
- }
218
- }
219
- }
220
- exports.GitHubSecretsStore = GitHubSecretsStore;
221
- //# sourceMappingURL=github-secrets-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github-secrets-store.js","sourceRoot":"","sources":["../../../../src/plugins/pipelines/factiii/github-secrets-store.ts"],"names":[],"mappings":"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"}