@factiii/stack 0.1.46 → 0.1.47
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.
- package/dist/cli/deploy.d.ts +3 -3
- package/dist/cli/deploy.d.ts.map +1 -1
- package/dist/cli/deploy.js +30 -3
- package/dist/cli/deploy.js.map +1 -1
- package/dist/cli/fix.d.ts +2 -2
- package/dist/cli/fix.js +2 -2
- package/dist/cli/scan.d.ts +6 -7
- package/dist/cli/scan.d.ts.map +1 -1
- package/dist/cli/scan.js +6 -7
- package/dist/cli/scan.js.map +1 -1
- package/dist/plugins/frameworks/prisma-trpc/index.d.ts.map +1 -1
- package/dist/plugins/frameworks/prisma-trpc/index.js +2 -1
- package/dist/plugins/frameworks/prisma-trpc/index.js.map +1 -1
- package/dist/plugins/pipelines/factiii/index.d.ts +0 -4
- package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/index.js +0 -6
- package/dist/plugins/pipelines/factiii/index.js.map +1 -1
- package/dist/plugins/pipelines/factiii/staging.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/staging.js +2 -1
- package/dist/plugins/pipelines/factiii/staging.js.map +1 -1
- package/dist/plugins/pipelines/factiii/utils/workflows.d.ts +0 -4
- package/dist/plugins/pipelines/factiii/utils/workflows.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/utils/workflows.js +0 -36
- package/dist/plugins/pipelines/factiii/utils/workflows.js.map +1 -1
- package/dist/plugins/servers/mac/scanfix/config.d.ts.map +1 -1
- package/dist/plugins/servers/mac/scanfix/config.js +2 -1
- package/dist/plugins/servers/mac/scanfix/config.js.map +1 -1
- package/dist/plugins/servers/mac/scanfix/containers.d.ts.map +1 -1
- package/dist/plugins/servers/mac/scanfix/containers.js +3 -2
- package/dist/plugins/servers/mac/scanfix/containers.js.map +1 -1
- package/dist/utils/git-repo-info.d.ts +15 -0
- package/dist/utils/git-repo-info.d.ts.map +1 -0
- package/dist/utils/git-repo-info.js +34 -0
- package/dist/utils/git-repo-info.js.map +1 -0
- package/dist/utils/github-status.d.ts +3 -6
- package/dist/utils/github-status.d.ts.map +1 -1
- package/dist/utils/github-status.js +3 -3
- package/dist/utils/github-status.js.map +1 -1
- package/dist/utils/secret-prompts.d.ts.map +1 -1
- package/dist/utils/secret-prompts.js +17 -26
- package/dist/utils/secret-prompts.js.map +1 -1
- package/package.json +1 -1
- package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts +0 -65
- package/dist/plugins/pipelines/factiii/github-secrets-store.d.ts.map +0 -1
- package/dist/plugins/pipelines/factiii/github-secrets-store.js +0 -221
- package/dist/plugins/pipelines/factiii/github-secrets-store.js.map +0 -1
|
@@ -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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"}
|