@factiii/stack 0.1.63 → 0.1.66
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/index.d.ts +8 -13
- package/dist/plugins/addons/vercel/index.d.ts.map +1 -1
- package/dist/plugins/addons/vercel/index.js +10 -25
- package/dist/plugins/addons/vercel/index.js.map +1 -1
- package/dist/plugins/addons/vercel/scanfix/config.d.ts +1 -1
- package/dist/plugins/addons/vercel/scanfix/config.d.ts.map +1 -1
- package/dist/plugins/addons/vercel/scanfix/config.js +46 -49
- package/dist/plugins/addons/vercel/scanfix/config.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
* Vercel Addon Plugin
|
|
3
3
|
*
|
|
4
4
|
* Cloud hosting addon for deploying to Vercel via factiii pipeline.
|
|
5
|
-
* Uses API
|
|
6
|
-
* CLI is used only for initial linking and when API doesn't support it.
|
|
5
|
+
* Uses Vercel REST API exclusively (no CLI required).
|
|
7
6
|
*
|
|
8
7
|
* This is an ADDON plugin that extends factiii pipeline. It handles:
|
|
9
8
|
* - Vercel deployment orchestration
|
|
@@ -11,26 +10,23 @@
|
|
|
11
10
|
* - Domain management
|
|
12
11
|
*
|
|
13
12
|
* ============================================================
|
|
14
|
-
* API
|
|
13
|
+
* API-Only Architecture
|
|
15
14
|
* ============================================================
|
|
16
15
|
*
|
|
17
|
-
*
|
|
18
|
-
* - Deploying (
|
|
19
|
-
* -
|
|
20
|
-
* - Managing environment variables
|
|
16
|
+
* All operations use the Vercel REST API:
|
|
17
|
+
* - Deploying (git-push triggers, status checks)
|
|
18
|
+
* - Project creation and linking
|
|
21
19
|
* - Listing projects/deployments
|
|
20
|
+
* - Token management via Ansible Vault
|
|
22
21
|
*
|
|
23
|
-
*
|
|
24
|
-
* - Initial project linking (vercel link)
|
|
25
|
-
* - When user explicitly needs CLI features
|
|
26
|
-
* - API doesn't support the operation
|
|
22
|
+
* No Vercel CLI is required or installed.
|
|
27
23
|
*
|
|
28
24
|
* ============================================================
|
|
29
25
|
* PLUGIN STRUCTURE STANDARD
|
|
30
26
|
* ============================================================
|
|
31
27
|
*
|
|
32
28
|
* **scanfix/** - Scan/fix operations organized by concern
|
|
33
|
-
* - config.ts - Vercel project configuration
|
|
29
|
+
* - config.ts - Vercel project configuration + framework detection
|
|
34
30
|
* - token.ts - VERCEL_TOKEN management
|
|
35
31
|
*
|
|
36
32
|
* **utils/** - Vercel API helpers
|
|
@@ -38,7 +34,6 @@
|
|
|
38
34
|
*
|
|
39
35
|
* **index.ts** - Main plugin class
|
|
40
36
|
* - Static metadata (id, name, category, version)
|
|
41
|
-
* - canReach() - Pipeline routing logic
|
|
42
37
|
* - Imports and combines all scanfix arrays
|
|
43
38
|
* ============================================================
|
|
44
39
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/addons/vercel/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/addons/vercel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,EACV,aAAa,EAEb,YAAY,EACZ,GAAG,EAGH,QAAQ,EACT,MAAM,yBAAyB,CAAC;AAMjC,cAAM,WAAW;IAKf,MAAM,CAAC,QAAQ,CAAC,EAAE,YAAY;IAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,kBAAkB;IACtC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAW;IAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAW;IAElC;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAgC;IAE7E;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAY;IAGnD,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,EAAE,CAAoB;IAG7D,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMnD;IAGF,MAAM,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEtD;IAEF;;;OAGG;WACU,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBlF,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWrC;IAMF;;;OAGG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;IAYzD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,CAG1B;IAMF;;OAEG;WACU,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAwB5E,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,aAAa;IAIjC;;OAEG;WACU,cAAc,CACzB,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GACvE,OAAO,CAAC,YAAY,CAAC;IAKxB;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAO/E;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAMpF;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
* Vercel Addon Plugin
|
|
4
4
|
*
|
|
5
5
|
* Cloud hosting addon for deploying to Vercel via factiii pipeline.
|
|
6
|
-
* Uses API
|
|
7
|
-
* CLI is used only for initial linking and when API doesn't support it.
|
|
6
|
+
* Uses Vercel REST API exclusively (no CLI required).
|
|
8
7
|
*
|
|
9
8
|
* This is an ADDON plugin that extends factiii pipeline. It handles:
|
|
10
9
|
* - Vercel deployment orchestration
|
|
@@ -12,26 +11,23 @@
|
|
|
12
11
|
* - Domain management
|
|
13
12
|
*
|
|
14
13
|
* ============================================================
|
|
15
|
-
* API
|
|
14
|
+
* API-Only Architecture
|
|
16
15
|
* ============================================================
|
|
17
16
|
*
|
|
18
|
-
*
|
|
19
|
-
* - Deploying (
|
|
20
|
-
* -
|
|
21
|
-
* - Managing environment variables
|
|
17
|
+
* All operations use the Vercel REST API:
|
|
18
|
+
* - Deploying (git-push triggers, status checks)
|
|
19
|
+
* - Project creation and linking
|
|
22
20
|
* - Listing projects/deployments
|
|
21
|
+
* - Token management via Ansible Vault
|
|
23
22
|
*
|
|
24
|
-
*
|
|
25
|
-
* - Initial project linking (vercel link)
|
|
26
|
-
* - When user explicitly needs CLI features
|
|
27
|
-
* - API doesn't support the operation
|
|
23
|
+
* No Vercel CLI is required or installed.
|
|
28
24
|
*
|
|
29
25
|
* ============================================================
|
|
30
26
|
* PLUGIN STRUCTURE STANDARD
|
|
31
27
|
* ============================================================
|
|
32
28
|
*
|
|
33
29
|
* **scanfix/** - Scan/fix operations organized by concern
|
|
34
|
-
* - config.ts - Vercel project configuration
|
|
30
|
+
* - config.ts - Vercel project configuration + framework detection
|
|
35
31
|
* - token.ts - VERCEL_TOKEN management
|
|
36
32
|
*
|
|
37
33
|
* **utils/** - Vercel API helpers
|
|
@@ -39,7 +35,6 @@
|
|
|
39
35
|
*
|
|
40
36
|
* **index.ts** - Main plugin class
|
|
41
37
|
* - Static metadata (id, name, category, version)
|
|
42
|
-
* - canReach() - Pipeline routing logic
|
|
43
38
|
* - Imports and combines all scanfix arrays
|
|
44
39
|
* ============================================================
|
|
45
40
|
*/
|
|
@@ -109,7 +104,6 @@ class VercelAddon {
|
|
|
109
104
|
};
|
|
110
105
|
// Schema for stackAuto.yml (auto-detected)
|
|
111
106
|
static autoConfigSchema = {
|
|
112
|
-
vercel_cli_installed: 'boolean',
|
|
113
107
|
vercel_project_linked: 'boolean',
|
|
114
108
|
};
|
|
115
109
|
/**
|
|
@@ -117,8 +111,8 @@ class VercelAddon {
|
|
|
117
111
|
* Loads if vercel config exists (factiii pipeline will use this addon as needed)
|
|
118
112
|
*/
|
|
119
113
|
static async shouldLoad(_rootDir, config) {
|
|
120
|
-
// Load if
|
|
121
|
-
if (config.vercel
|
|
114
|
+
// Load if vercel section exists at all (even empty vercel: {})
|
|
115
|
+
if (config.vercel !== undefined) {
|
|
122
116
|
return true;
|
|
123
117
|
}
|
|
124
118
|
// Load if vercel section exists in any environment
|
|
@@ -172,15 +166,6 @@ class VercelAddon {
|
|
|
172
166
|
*/
|
|
173
167
|
static async detectConfig(rootDir) {
|
|
174
168
|
const detected = {};
|
|
175
|
-
try {
|
|
176
|
-
// Check if Vercel CLI is installed
|
|
177
|
-
const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
|
|
178
|
-
execSync('which vercel', { stdio: 'pipe' });
|
|
179
|
-
detected.vercel_cli_installed = true;
|
|
180
|
-
}
|
|
181
|
-
catch {
|
|
182
|
-
detected.vercel_cli_installed = false;
|
|
183
|
-
}
|
|
184
169
|
// Check if project is linked (.vercel/project.json)
|
|
185
170
|
try {
|
|
186
171
|
const fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/addons/vercel/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/addons/vercel/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Vercel Configuration Scanfixes
|
|
3
3
|
*
|
|
4
4
|
* Detects and fixes Vercel project configuration issues.
|
|
5
|
-
* Uses Vercel REST API
|
|
5
|
+
* Uses Vercel REST API exclusively (no CLI required).
|
|
6
6
|
*/
|
|
7
7
|
import type { Fix } from '../../../../types/index.js';
|
|
8
8
|
export declare const fixes: Fix[];
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AA2BtD,eAAO,MAAM,KAAK,EAAE,GAAG,EAkRtB,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Vercel Configuration Scanfixes
|
|
4
4
|
*
|
|
5
5
|
* Detects and fixes Vercel project configuration issues.
|
|
6
|
-
* Uses Vercel REST API
|
|
6
|
+
* Uses Vercel REST API exclusively (no CLI required).
|
|
7
7
|
*/
|
|
8
8
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
9
|
if (k2 === undefined) k2 = k;
|
|
@@ -42,6 +42,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
42
42
|
exports.fixes = void 0;
|
|
43
43
|
const fs = __importStar(require("fs"));
|
|
44
44
|
const path = __importStar(require("path"));
|
|
45
|
+
/**
|
|
46
|
+
* Auto-detect framework from package.json.
|
|
47
|
+
* Used when creating Vercel projects so Vercel picks the right build settings.
|
|
48
|
+
*/
|
|
49
|
+
function detectFramework(rootDir) {
|
|
50
|
+
try {
|
|
51
|
+
const pkgPath = path.join(rootDir, 'package.json');
|
|
52
|
+
if (!fs.existsSync(pkgPath))
|
|
53
|
+
return undefined;
|
|
54
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
|
|
55
|
+
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
|
|
56
|
+
if (deps['next'])
|
|
57
|
+
return 'nextjs';
|
|
58
|
+
if (deps['nuxt'])
|
|
59
|
+
return 'nuxtjs';
|
|
60
|
+
if (deps['gatsby'])
|
|
61
|
+
return 'gatsby';
|
|
62
|
+
if (deps['svelte'] || deps['@sveltejs/kit'])
|
|
63
|
+
return 'sveltekit';
|
|
64
|
+
if (deps['astro'])
|
|
65
|
+
return 'astro';
|
|
66
|
+
if (deps['remix'] || deps['@remix-run/react'])
|
|
67
|
+
return 'remix';
|
|
68
|
+
if (deps['vite'])
|
|
69
|
+
return 'vite';
|
|
70
|
+
if (deps['react'])
|
|
71
|
+
return 'create-react-app';
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
45
78
|
exports.fixes = [
|
|
46
79
|
{
|
|
47
80
|
id: 'vercel-config-missing',
|
|
@@ -98,11 +131,15 @@ exports.fixes = [
|
|
|
98
131
|
const cleanGitRepo = gitRepo && !gitRepo.toUpperCase().startsWith('EXAMPLE')
|
|
99
132
|
? gitRepo
|
|
100
133
|
: undefined;
|
|
134
|
+
const framework = detectFramework(rootDir);
|
|
135
|
+
if (framework) {
|
|
136
|
+
console.log(' Detected framework: ' + framework);
|
|
137
|
+
}
|
|
101
138
|
try {
|
|
102
139
|
project = await createVercelProject(token, repoName, {
|
|
103
140
|
teamId,
|
|
104
141
|
gitRepo: cleanGitRepo,
|
|
105
|
-
framework
|
|
142
|
+
framework,
|
|
106
143
|
});
|
|
107
144
|
}
|
|
108
145
|
catch (createErr) {
|
|
@@ -113,7 +150,7 @@ exports.fixes = [
|
|
|
113
150
|
console.log(' (You can link it later in Vercel Dashboard → Project → Settings → Git)');
|
|
114
151
|
project = await createVercelProject(token, repoName, {
|
|
115
152
|
teamId,
|
|
116
|
-
framework
|
|
153
|
+
framework,
|
|
117
154
|
});
|
|
118
155
|
}
|
|
119
156
|
else {
|
|
@@ -173,14 +210,12 @@ exports.fixes = [
|
|
|
173
210
|
}
|
|
174
211
|
},
|
|
175
212
|
manualFix: `
|
|
176
|
-
Add Vercel
|
|
213
|
+
Add Vercel to stack.yml:
|
|
177
214
|
|
|
178
|
-
vercel:
|
|
179
|
-
project_name: EXAMPLE_my-project
|
|
180
|
-
org_id: EXAMPLE_team_xxx # Optional: your Vercel team/org ID
|
|
181
|
-
project_id: EXAMPLE_prj_xxx # Optional: auto-detected after linking
|
|
215
|
+
vercel: {}
|
|
182
216
|
|
|
183
|
-
|
|
217
|
+
Then run: npx stack fix
|
|
218
|
+
(Auto-creates project, detects framework, and saves IDs via Vercel API)
|
|
184
219
|
`,
|
|
185
220
|
},
|
|
186
221
|
{
|
|
@@ -251,48 +286,10 @@ Or run: npx stack fix (auto-detects from Vercel API if VERCEL_TOKEN is set)
|
|
|
251
286
|
}
|
|
252
287
|
},
|
|
253
288
|
manualFix: `
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
vercel link
|
|
257
|
-
|
|
258
|
-
Or set project_id in stack.yml and run: npx stack fix
|
|
259
|
-
(The fix will auto-create .vercel/project.json from the API)
|
|
289
|
+
Run: npx stack fix
|
|
290
|
+
(Auto-creates .vercel/project.json from Vercel API — no CLI needed)
|
|
260
291
|
`,
|
|
261
292
|
},
|
|
262
|
-
{
|
|
263
|
-
id: 'vercel-cli-not-installed',
|
|
264
|
-
stage: 'dev',
|
|
265
|
-
severity: 'info',
|
|
266
|
-
description: 'Vercel CLI not installed (optional — API is used for deployments)',
|
|
267
|
-
scan: async (config, _rootDir) => {
|
|
268
|
-
// Skip if vercel not configured
|
|
269
|
-
if (!config.vercel)
|
|
270
|
-
return false;
|
|
271
|
-
// Check if vercel CLI is installed
|
|
272
|
-
try {
|
|
273
|
-
const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
|
|
274
|
-
execSync('which vercel || where vercel', { stdio: 'pipe' });
|
|
275
|
-
return false; // CLI installed = no problem
|
|
276
|
-
}
|
|
277
|
-
catch {
|
|
278
|
-
return true; // CLI not installed = info-level (API works without it)
|
|
279
|
-
}
|
|
280
|
-
},
|
|
281
|
-
fix: async (_config, _rootDir) => {
|
|
282
|
-
console.log(' Installing Vercel CLI globally...');
|
|
283
|
-
const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
|
|
284
|
-
try {
|
|
285
|
-
execSync('npm install -g vercel', { stdio: 'inherit' });
|
|
286
|
-
console.log(' [OK] Vercel CLI installed');
|
|
287
|
-
return true;
|
|
288
|
-
}
|
|
289
|
-
catch (e) {
|
|
290
|
-
console.log(' [!] Failed to install Vercel CLI: ' + (e instanceof Error ? e.message : String(e)));
|
|
291
|
-
return false;
|
|
292
|
-
}
|
|
293
|
-
},
|
|
294
|
-
manualFix: 'Install Vercel CLI manually: npm install -g vercel\n(Optional — deployments use the Vercel API, not CLI)',
|
|
295
|
-
},
|
|
296
293
|
{
|
|
297
294
|
id: 'vercel-gitignore-missing',
|
|
298
295
|
stage: 'dev',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/config.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/config.ts"],"names":[],"mappings":"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"}
|