@factiii/stack 0.1.58 → 0.1.59
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/plugins/addons/vercel/scanfix/config.d.ts +1 -0
- package/dist/plugins/addons/vercel/scanfix/config.d.ts.map +1 -1
- package/dist/plugins/addons/vercel/scanfix/config.js +154 -41
- package/dist/plugins/addons/vercel/scanfix/config.js.map +1 -1
- package/dist/plugins/addons/vercel/utils/vercel-api.d.ts +32 -0
- package/dist/plugins/addons/vercel/utils/vercel-api.d.ts.map +1 -1
- package/dist/plugins/addons/vercel/utils/vercel-api.js +48 -0
- package/dist/plugins/addons/vercel/utils/vercel-api.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAGtD,eAAO,MAAM,KAAK,EAAE,GAAG,EAyRtB,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Vercel Configuration Scanfixes
|
|
4
4
|
*
|
|
5
5
|
* Detects and fixes Vercel project configuration issues.
|
|
6
|
+
* Uses Vercel REST API for auto-fixing (no CLI required).
|
|
6
7
|
*/
|
|
7
8
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
9
|
if (k2 === undefined) k2 = k;
|
|
@@ -48,7 +49,7 @@ exports.fixes = [
|
|
|
48
49
|
severity: 'critical',
|
|
49
50
|
description: 'Vercel configuration missing in stack.yml',
|
|
50
51
|
scan: async (config, _rootDir) => {
|
|
51
|
-
// Skip if vercel not configured
|
|
52
|
+
// Skip if vercel not configured at all
|
|
52
53
|
if (!config.vercel)
|
|
53
54
|
return false;
|
|
54
55
|
// Check required fields
|
|
@@ -58,19 +59,97 @@ exports.fixes = [
|
|
|
58
59
|
}
|
|
59
60
|
return false; // Configured properly
|
|
60
61
|
},
|
|
61
|
-
fix:
|
|
62
|
+
fix: async (config, rootDir) => {
|
|
63
|
+
console.log(' Auto-detecting Vercel project via API...');
|
|
64
|
+
try {
|
|
65
|
+
const { getVercelToken, findVercelProject, listVercelProjects, createVercelProject } = await Promise.resolve().then(() => __importStar(require('../utils/vercel-api.js')));
|
|
66
|
+
// Get token
|
|
67
|
+
let token;
|
|
68
|
+
try {
|
|
69
|
+
token = await getVercelToken(config, rootDir);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
console.log(' [!] VERCEL_TOKEN not found — cannot auto-detect project');
|
|
73
|
+
console.log(' Run: npx stack fix --secrets (to set VERCEL_TOKEN first)');
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
const repoName = config.name ?? path.basename(rootDir);
|
|
77
|
+
const teamId = config.vercel?.org_id;
|
|
78
|
+
// Try to find existing project by repo name
|
|
79
|
+
console.log(' Looking for project matching "' + repoName + '"...');
|
|
80
|
+
let project = await findVercelProject(token, repoName, teamId);
|
|
81
|
+
if (!project) {
|
|
82
|
+
// List all projects so user can see what's available
|
|
83
|
+
const allProjects = await listVercelProjects(token, teamId);
|
|
84
|
+
if (allProjects.length > 0) {
|
|
85
|
+
console.log(' No project named "' + repoName + '" found.');
|
|
86
|
+
console.log(' Available projects:');
|
|
87
|
+
for (const p of allProjects.slice(0, 10)) {
|
|
88
|
+
console.log(' - ' + p.name + ' (id: ' + p.id + ')');
|
|
89
|
+
}
|
|
90
|
+
if (allProjects.length > 10) {
|
|
91
|
+
console.log(' ... and ' + (allProjects.length - 10) + ' more');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Create the project automatically
|
|
95
|
+
console.log('');
|
|
96
|
+
console.log(' Creating Vercel project "' + repoName + '"...');
|
|
97
|
+
const gitRepo = config.github_repo;
|
|
98
|
+
const cleanGitRepo = gitRepo && !gitRepo.toUpperCase().startsWith('EXAMPLE')
|
|
99
|
+
? gitRepo
|
|
100
|
+
: undefined;
|
|
101
|
+
project = await createVercelProject(token, repoName, {
|
|
102
|
+
teamId,
|
|
103
|
+
gitRepo: cleanGitRepo,
|
|
104
|
+
framework: 'nextjs',
|
|
105
|
+
});
|
|
106
|
+
console.log(' [OK] Created Vercel project: ' + project.name);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
console.log(' [OK] Found existing project: ' + project.name);
|
|
110
|
+
}
|
|
111
|
+
// Update stack.yml with project info
|
|
112
|
+
const { getStackConfigPath } = await Promise.resolve().then(() => __importStar(require('../../../../constants/config-files.js')));
|
|
113
|
+
const configPath = getStackConfigPath(rootDir);
|
|
114
|
+
let configContent = fs.readFileSync(configPath, 'utf8');
|
|
115
|
+
// Check if there's an existing vercel section to update
|
|
116
|
+
if (configContent.includes('vercel:')) {
|
|
117
|
+
// Replace EXAMPLE values or add missing fields
|
|
118
|
+
configContent = configContent
|
|
119
|
+
.replace(/project_name:\s*EXAMPLE_[^\n]*/i, 'project_name: ' + project.name)
|
|
120
|
+
.replace(/project_id:\s*EXAMPLE_[^\n]*/i, 'project_id: ' + project.id)
|
|
121
|
+
.replace(/org_id:\s*EXAMPLE_[^\n]*/i, 'org_id: ' + (project.orgId ?? ''));
|
|
122
|
+
// If project_id wasn't in the file, add it
|
|
123
|
+
if (!configContent.includes('project_id:')) {
|
|
124
|
+
configContent = configContent.replace(/project_name:\s*.+/, '$&\n project_id: ' + project.id);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Add new vercel section
|
|
129
|
+
const vercelSection = '\nvercel:\n' +
|
|
130
|
+
' project_name: ' + project.name + '\n' +
|
|
131
|
+
' project_id: ' + project.id + '\n' +
|
|
132
|
+
(project.orgId ? ' org_id: ' + project.orgId + '\n' : '');
|
|
133
|
+
configContent += vercelSection;
|
|
134
|
+
}
|
|
135
|
+
fs.writeFileSync(configPath, configContent, 'utf8');
|
|
136
|
+
console.log(' [OK] Updated stack.yml with Vercel project config');
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
catch (e) {
|
|
140
|
+
console.log(' [!] Failed: ' + (e instanceof Error ? e.message : String(e)));
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
},
|
|
62
144
|
manualFix: `
|
|
63
145
|
Add Vercel configuration to stack.yml:
|
|
64
146
|
|
|
65
147
|
vercel:
|
|
66
|
-
project_name:
|
|
67
|
-
org_id:
|
|
68
|
-
project_id:
|
|
148
|
+
project_name: EXAMPLE_my-project
|
|
149
|
+
org_id: EXAMPLE_team_xxx # Optional: your Vercel team/org ID
|
|
150
|
+
project_id: EXAMPLE_prj_xxx # Optional: auto-detected after linking
|
|
69
151
|
|
|
70
|
-
|
|
71
|
-
vercel link
|
|
72
|
-
|
|
73
|
-
Or use the Vercel dashboard to create a project and add the IDs to stack.yml.
|
|
152
|
+
Or run: npx stack fix (auto-detects from Vercel API if VERCEL_TOKEN is set)
|
|
74
153
|
`,
|
|
75
154
|
},
|
|
76
155
|
{
|
|
@@ -79,40 +158,81 @@ Or use the Vercel dashboard to create a project and add the IDs to stack.yml.
|
|
|
79
158
|
severity: 'warning',
|
|
80
159
|
description: 'Vercel project not linked (missing .vercel/project.json)',
|
|
81
160
|
scan: async (config, rootDir) => {
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
161
|
+
// Skip if vercel not configured
|
|
162
|
+
if (!config.vercel)
|
|
163
|
+
return false;
|
|
164
|
+
// Skip if project_name is still EXAMPLE
|
|
165
|
+
const projectName = config.vercel.project_name;
|
|
166
|
+
if (!projectName || projectName.toUpperCase().startsWith('EXAMPLE')) {
|
|
167
|
+
return false; // Will be caught by vercel-config-missing
|
|
88
168
|
}
|
|
89
169
|
// Check if .vercel/project.json exists
|
|
90
170
|
const vercelConfigPath = path.join(rootDir, '.vercel', 'project.json');
|
|
91
|
-
|
|
171
|
+
return !fs.existsSync(vercelConfigPath);
|
|
172
|
+
},
|
|
173
|
+
fix: async (config, rootDir) => {
|
|
174
|
+
console.log(' Auto-linking Vercel project via API...');
|
|
175
|
+
try {
|
|
176
|
+
const projectId = config.vercel?.project_id;
|
|
177
|
+
const orgId = config.vercel?.org_id;
|
|
178
|
+
const projectName = config.vercel?.project_name;
|
|
179
|
+
if (!projectId && !projectName) {
|
|
180
|
+
console.log(' [!] No project_id or project_name in stack.yml');
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
let finalProjectId = projectId;
|
|
184
|
+
let finalOrgId = orgId;
|
|
185
|
+
// If we have name but no ID, look it up via API
|
|
186
|
+
if (!finalProjectId && projectName) {
|
|
187
|
+
const { getVercelToken, findVercelProject } = await Promise.resolve().then(() => __importStar(require('../utils/vercel-api.js')));
|
|
188
|
+
const token = await getVercelToken(config, rootDir);
|
|
189
|
+
const project = await findVercelProject(token, projectName, orgId);
|
|
190
|
+
if (project) {
|
|
191
|
+
finalProjectId = project.id;
|
|
192
|
+
finalOrgId = finalOrgId ?? project.orgId;
|
|
193
|
+
console.log(' Found project: ' + project.name + ' (id: ' + project.id + ')');
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
console.log(' [!] Project "' + projectName + '" not found in Vercel');
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// Create .vercel directory
|
|
201
|
+
const vercelDir = path.join(rootDir, '.vercel');
|
|
202
|
+
if (!fs.existsSync(vercelDir)) {
|
|
203
|
+
fs.mkdirSync(vercelDir, { recursive: true });
|
|
204
|
+
}
|
|
205
|
+
// Write project.json (same format as vercel link creates)
|
|
206
|
+
const projectJson = {
|
|
207
|
+
projectId: finalProjectId,
|
|
208
|
+
orgId: finalOrgId ?? '',
|
|
209
|
+
};
|
|
210
|
+
fs.writeFileSync(path.join(vercelDir, 'project.json'), JSON.stringify(projectJson, null, 2) + '\n', 'utf8');
|
|
211
|
+
console.log(' [OK] Created .vercel/project.json');
|
|
212
|
+
console.log(' Project ID: ' + finalProjectId);
|
|
213
|
+
if (finalOrgId)
|
|
214
|
+
console.log(' Org ID: ' + finalOrgId);
|
|
215
|
+
return true;
|
|
216
|
+
}
|
|
217
|
+
catch (e) {
|
|
218
|
+
console.log(' [!] Failed: ' + (e instanceof Error ? e.message : String(e)));
|
|
92
219
|
return false;
|
|
93
220
|
}
|
|
94
|
-
return true;
|
|
95
221
|
},
|
|
96
|
-
fix: null,
|
|
97
222
|
manualFix: `
|
|
98
223
|
Link your project to Vercel:
|
|
99
224
|
|
|
100
225
|
vercel link
|
|
101
226
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
2. Ask if you want to link to an existing project or create new one
|
|
105
|
-
3. Create .vercel/project.json with project metadata
|
|
106
|
-
|
|
107
|
-
After linking, the project_id and org_id will be saved in .vercel/project.json.
|
|
108
|
-
You can optionally copy these to stack.yml for documentation.
|
|
227
|
+
Or set project_id in stack.yml and run: npx stack fix
|
|
228
|
+
(The fix will auto-create .vercel/project.json from the API)
|
|
109
229
|
`,
|
|
110
230
|
},
|
|
111
231
|
{
|
|
112
232
|
id: 'vercel-cli-not-installed',
|
|
113
233
|
stage: 'dev',
|
|
114
|
-
severity: '
|
|
115
|
-
description: 'Vercel CLI not installed (
|
|
234
|
+
severity: 'info',
|
|
235
|
+
description: 'Vercel CLI not installed (optional — API is used for deployments)',
|
|
116
236
|
scan: async (config, _rootDir) => {
|
|
117
237
|
// Skip if vercel not configured
|
|
118
238
|
if (!config.vercel)
|
|
@@ -120,11 +240,11 @@ You can optionally copy these to stack.yml for documentation.
|
|
|
120
240
|
// Check if vercel CLI is installed
|
|
121
241
|
try {
|
|
122
242
|
const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
|
|
123
|
-
execSync('which vercel', { stdio: 'pipe' });
|
|
243
|
+
execSync('which vercel || where vercel', { stdio: 'pipe' });
|
|
124
244
|
return false; // CLI installed = no problem
|
|
125
245
|
}
|
|
126
246
|
catch {
|
|
127
|
-
return true; // CLI not installed =
|
|
247
|
+
return true; // CLI not installed = info-level (API works without it)
|
|
128
248
|
}
|
|
129
249
|
},
|
|
130
250
|
fix: async (_config, _rootDir) => {
|
|
@@ -140,7 +260,7 @@ You can optionally copy these to stack.yml for documentation.
|
|
|
140
260
|
return false;
|
|
141
261
|
}
|
|
142
262
|
},
|
|
143
|
-
manualFix: 'Install Vercel CLI manually: npm install -g vercel',
|
|
263
|
+
manualFix: 'Install Vercel CLI manually: npm install -g vercel\n(Optional — deployments use the Vercel API, not CLI)',
|
|
144
264
|
},
|
|
145
265
|
{
|
|
146
266
|
id: 'vercel-gitignore-missing',
|
|
@@ -148,20 +268,13 @@ You can optionally copy these to stack.yml for documentation.
|
|
|
148
268
|
severity: 'info',
|
|
149
269
|
description: '.vercel directory not in .gitignore',
|
|
150
270
|
scan: async (config, rootDir) => {
|
|
151
|
-
//
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
const usesVercel = Object.values(environments).some((env) => env.pipeline === 'vercel');
|
|
155
|
-
if (!usesVercel) {
|
|
156
|
-
return true;
|
|
157
|
-
}
|
|
271
|
+
// Skip if vercel not configured
|
|
272
|
+
if (!config.vercel)
|
|
273
|
+
return false;
|
|
158
274
|
// Check if .vercel is in .gitignore
|
|
159
275
|
const { isGitignored } = await Promise.resolve().then(() => __importStar(require('../../../../utils/gitignore.js')));
|
|
160
276
|
const isIgnored = await isGitignored('.vercel', rootDir);
|
|
161
|
-
|
|
162
|
-
return false;
|
|
163
|
-
}
|
|
164
|
-
return true;
|
|
277
|
+
return !isIgnored; // Not ignored = problem
|
|
165
278
|
},
|
|
166
279
|
fix: async (_config, rootDir) => {
|
|
167
280
|
console.log(' Adding .vercel to .gitignore...');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/config.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,38 @@ interface DeployOptions {
|
|
|
19
19
|
branch?: string;
|
|
20
20
|
commit?: string;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Get VERCEL_TOKEN from vault or environment
|
|
24
|
+
*/
|
|
25
|
+
export declare function getVercelToken(config: FactiiiConfig, rootDir: string): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* List all Vercel projects for the authenticated user/team
|
|
28
|
+
*/
|
|
29
|
+
export declare function listVercelProjects(token: string, teamId?: string): Promise<{
|
|
30
|
+
id: string;
|
|
31
|
+
name: string;
|
|
32
|
+
orgId?: string;
|
|
33
|
+
}[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Find a Vercel project by name (case-insensitive match)
|
|
36
|
+
*/
|
|
37
|
+
export declare function findVercelProject(token: string, projectName: string, teamId?: string): Promise<{
|
|
38
|
+
id: string;
|
|
39
|
+
name: string;
|
|
40
|
+
orgId?: string;
|
|
41
|
+
} | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Create a new Vercel project via API
|
|
44
|
+
*/
|
|
45
|
+
export declare function createVercelProject(token: string, name: string, options?: {
|
|
46
|
+
teamId?: string;
|
|
47
|
+
gitRepo?: string;
|
|
48
|
+
framework?: string;
|
|
49
|
+
}): Promise<{
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
orgId?: string;
|
|
53
|
+
}>;
|
|
22
54
|
/**
|
|
23
55
|
* Deploy to Vercel via API
|
|
24
56
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-api.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/utils/vercel-api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAS9E,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IACnD,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;IACnE,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;CAC9C;AAED,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"vercel-api.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/utils/vercel-api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAS9E,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IACnD,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;IACnE,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;CAC9C;AAED,UAAU,aAAa;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB5F;AAmHD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CASzD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAI9D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACtE,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBvD;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAmIvB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAelC"}
|
|
@@ -41,6 +41,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
};
|
|
42
42
|
})();
|
|
43
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.getVercelToken = getVercelToken;
|
|
45
|
+
exports.listVercelProjects = listVercelProjects;
|
|
46
|
+
exports.findVercelProject = findVercelProject;
|
|
47
|
+
exports.createVercelProject = createVercelProject;
|
|
44
48
|
exports.deployToVercel = deployToVercel;
|
|
45
49
|
exports.getDeploymentStatus = getDeploymentStatus;
|
|
46
50
|
const fs = __importStar(require("fs"));
|
|
@@ -154,6 +158,50 @@ async function callVercelAPI(endpoint, token, options = {}) {
|
|
|
154
158
|
}
|
|
155
159
|
return await response.json();
|
|
156
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* List all Vercel projects for the authenticated user/team
|
|
163
|
+
*/
|
|
164
|
+
async function listVercelProjects(token, teamId) {
|
|
165
|
+
const result = (await callVercelAPI('/v10/projects?limit=100', token, { teamId }));
|
|
166
|
+
return (result.projects ?? []).map(p => ({
|
|
167
|
+
id: p.id,
|
|
168
|
+
name: p.name,
|
|
169
|
+
orgId: p.accountId ?? teamId,
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Find a Vercel project by name (case-insensitive match)
|
|
174
|
+
*/
|
|
175
|
+
async function findVercelProject(token, projectName, teamId) {
|
|
176
|
+
const projects = await listVercelProjects(token, teamId);
|
|
177
|
+
const normalizedName = projectName.toLowerCase();
|
|
178
|
+
return projects.find(p => p.name.toLowerCase() === normalizedName) ?? null;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Create a new Vercel project via API
|
|
182
|
+
*/
|
|
183
|
+
async function createVercelProject(token, name, options = {}) {
|
|
184
|
+
const body = { name };
|
|
185
|
+
if (options.gitRepo) {
|
|
186
|
+
body.gitRepository = {
|
|
187
|
+
type: 'github',
|
|
188
|
+
repo: options.gitRepo,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
if (options.framework) {
|
|
192
|
+
body.framework = options.framework;
|
|
193
|
+
}
|
|
194
|
+
const result = (await callVercelAPI('/v9/projects', token, {
|
|
195
|
+
method: 'POST',
|
|
196
|
+
body,
|
|
197
|
+
teamId: options.teamId,
|
|
198
|
+
}));
|
|
199
|
+
return {
|
|
200
|
+
id: result.id,
|
|
201
|
+
name: result.name,
|
|
202
|
+
orgId: result.accountId ?? options.teamId,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
157
205
|
/**
|
|
158
206
|
* Deploy to Vercel via API
|
|
159
207
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-api.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/utils/vercel-api.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"vercel-api.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/utils/vercel-api.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BH,wCAoBC;AAsHD,gDAYC;AAKD,8CAQC;AAKD,kDA6BC;AAQD,wCAsIC;AAKD,kDAkBC;AAvYD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAyC;AAEzC,2EAA0E;AAsB1E;;GAEG;AACI,KAAK,UAAU,cAAc,CAAC,MAAqB,EAAE,OAAe;IACzE,0BAA0B;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAClC,CAAC;IAED,0BAA0B;IAC1B,MAAM,EAAE,mBAAmB,EAAE,GAAG,wDAAa,4CAA4C,GAAC,CAAC;IAC3F,MAAM,KAAK,GAAG,IAAI,mBAAmB,CAAC;QACpC,UAAU,EAAG,MAAM,CAAC,OAAO,EAAE,UAAqB,IAAI,IAAA,uCAAmB,EAAC,MAAM,CAAC;QACjF,mBAAmB,EAAE,MAAM,CAAC,OAAO,EAAE,mBAAyC;QAC9E,OAAO;KACR,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,OAAe;IAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAEvE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAI9B,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,SAAS;YAClB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;YAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,OAAe;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,2BAA2B,EAAE;YACnD,GAAG,EAAE,OAAO;YACZ,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,2BAA2B,EAAE;YACnD,GAAG,EAAE,OAAO;YACZ,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,oBAAoB,EAAE;YAC5C,GAAG,EAAE,OAAO;YACZ,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,gCAAgC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC1B,QAAgB,EAChB,KAAa,EACb,UAII,EAAE;IAEN,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEjD,qCAAqC;IACrC,IAAI,GAAG,GAAG,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,MAAM,CAAC;IAClC,CAAC;SAAM,IAAI,MAAM,EAAE,CAAC;QAClB,GAAG,GAAG,GAAG,GAAG,UAAU,GAAG,MAAM,CAAC;IAClC,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,SAAS,GAAG,KAAK;QAChC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IAEF,MAAM,YAAY,GAAgB;QAChC,MAAM;QACN,OAAO;KACR,CAAC;IAEF,IAAI,IAAI,EAAE,CAAC;QACT,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAEhD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,MAAe;IAEf,MAAM,MAAM,GAAG,CAAC,MAAM,aAAa,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAEhF,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvC,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,KAAK,EAAE,CAAC,CAAC,SAAS,IAAI,MAAM;KAC7B,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,WAAmB,EACnB,MAAe;IAEf,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,IAAI,IAAI,CAAC;AAC7E,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,KAAa,EACb,IAAY,EACZ,UAAqE,EAAE;IAEvE,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,CAAC;IAE/C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC,aAAa,GAAG;YACnB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,OAAO,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,aAAa,CAAC,cAAc,EAAE,KAAK,EAAE;QACzD,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAqD,CAAC;IAExD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM;KAC1C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAClC,MAAqB,EACrB,UAAyB,EAAE;IAE3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE9B,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QAEpD,YAAY;QACZ,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEpD,uBAAuB;QACvB,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,sCAAsC;aAC9C,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;QAExE,eAAe;QACf,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,+CAA+C;aACvD,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QACtD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QAEtD,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,YAAY,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7D,6BAA6B;QAC7B,+DAA+D;QAC/D,qFAAqF;QACrF,+CAA+C;QAE/C,yBAAyB;QACzB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAA,wBAAQ,EAAC,uBAAuB,GAAG,YAAY,EAAE;gBACpE,GAAG,EAAE,OAAO;gBACZ,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEV,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;gBACpE,IAAA,wBAAQ,EAAC,kBAAkB,GAAG,YAAY,EAAE;oBAC1C,GAAG,EAAE,OAAO;oBACZ,KAAK,EAAE,SAAS;iBACjB,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC1D,IAAA,wBAAQ,EAAC,qBAAqB,GAAG,YAAY,EAAE;gBAC7C,GAAG,EAAE,OAAO;gBACZ,KAAK,EAAE,SAAS;aACjB,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC9C,CAAC;QAED,oFAAoF;QACpF,uEAAuE;QACvE,8DAA8D;QAE9D,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAElD,iDAAiD;QACjD,MAAM,mBAAmB,GAAG,CAAC,MAAM,aAAa,CAC9C,4BAA4B,GAAG,OAAO,CAAC,EAAE,GAAG,UAAU,EACtD,KAAK,EACL,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,CAC1B,CAAyC,CAAC;QAE3C,IAAI,CAAC,mBAAmB,CAAC,WAAW,IAAI,mBAAmB,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrF,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,0EAA0E;aAClF,CAAC;QACJ,CAAC;QAED,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,uBAAuB;aAC/B,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAE3D,iDAAiD;QACjD,6DAA6D;QAC7D,IAAI,gBAAgB,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,8BAA8B,GAAG,gBAAgB,CAAC,GAAG;aAC/D,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,CAAC,UAAU,KAAK,UAAU,IAAI,gBAAgB,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC3F,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,kCAAkC,GAAG,gBAAgB,CAAC,GAAG;aACnE,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,wDAAwD;aAChE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,qBAAqB,GAAG,gBAAgB,CAAC,UAAU;SAC7D,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;SAClD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,mBAAmB,CACvC,MAAqB,EACrB,YAAoB;IAEpB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,UAAU,GAAG,CAAC,MAAM,aAAa,CAAC,mBAAmB,GAAG,YAAY,EAAE,KAAK,EAAE;YACjF,MAAM,EAAE,OAAO,EAAE,KAAK;SACvB,CAAC,CAAqB,CAAC;QAExB,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|