@factiii/stack 0.1.56 → 0.1.58
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-secrets.js +1 -1
- package/dist/cli/deploy-secrets.js.map +1 -1
- package/dist/cli/fix.d.ts.map +1 -1
- package/dist/cli/fix.js +27 -4
- package/dist/cli/fix.js.map +1 -1
- package/dist/cli/scan.d.ts.map +1 -1
- package/dist/cli/scan.js +24 -3
- package/dist/cli/scan.js.map +1 -1
- package/dist/cli/secrets.js +1 -1
- package/dist/cli/secrets.js.map +1 -1
- package/dist/generators/generate-stack-auto.d.ts.map +1 -1
- package/dist/generators/generate-stack-auto.js +17 -16
- package/dist/generators/generate-stack-auto.js.map +1 -1
- package/dist/generators/generate-stack-yml.d.ts.map +1 -1
- package/dist/generators/generate-stack-yml.js +23 -1
- package/dist/generators/generate-stack-yml.js.map +1 -1
- package/dist/plugins/addons/vercel/index.d.ts +99 -0
- package/dist/plugins/addons/vercel/index.d.ts.map +1 -0
- package/dist/plugins/addons/vercel/index.js +234 -0
- package/dist/plugins/addons/vercel/index.js.map +1 -0
- package/dist/plugins/addons/vercel/scanfix/config.d.ts +8 -0
- package/dist/plugins/addons/vercel/scanfix/config.d.ts.map +1 -0
- package/dist/plugins/addons/vercel/scanfix/config.js +182 -0
- package/dist/plugins/addons/vercel/scanfix/config.js.map +1 -0
- package/dist/plugins/addons/vercel/scanfix/token.d.ts +8 -0
- package/dist/plugins/addons/vercel/scanfix/token.d.ts.map +1 -0
- package/dist/plugins/addons/vercel/scanfix/token.js +127 -0
- package/dist/plugins/addons/vercel/scanfix/token.js.map +1 -0
- package/dist/plugins/addons/vercel/utils/vercel-api.d.ts +34 -0
- package/dist/plugins/addons/vercel/utils/vercel-api.d.ts.map +1 -0
- package/dist/plugins/addons/vercel/utils/vercel-api.js +290 -0
- package/dist/plugins/addons/vercel/utils/vercel-api.js.map +1 -0
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +9 -0
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/credentials.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/credentials.js +91 -0
- package/dist/plugins/pipelines/aws/scanfix/credentials.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.js +15 -1
- package/dist/plugins/pipelines/aws/scanfix/ec2.js.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/iam.d.ts.map +1 -1
- package/dist/plugins/pipelines/aws/scanfix/iam.js +5 -0
- package/dist/plugins/pipelines/aws/scanfix/iam.js.map +1 -1
- package/dist/plugins/pipelines/factiii/index.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/index.js +68 -7
- package/dist/plugins/pipelines/factiii/index.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/config.js +2 -2
- package/dist/plugins/pipelines/factiii/scanfix/config.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/secrets.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js +78 -1
- package/dist/plugins/pipelines/factiii/scanfix/secrets.js.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/vault.d.ts.map +1 -1
- package/dist/plugins/pipelines/factiii/scanfix/vault.js +5 -3
- package/dist/plugins/pipelines/factiii/scanfix/vault.js.map +1 -1
- package/dist/plugins/servers/amazon-linux/index.d.ts +1 -0
- package/dist/plugins/servers/amazon-linux/index.d.ts.map +1 -1
- package/dist/plugins/servers/mac/index.d.ts +1 -0
- package/dist/plugins/servers/mac/index.d.ts.map +1 -1
- package/dist/plugins/servers/mac/scanfix/config.js +1 -1
- package/dist/plugins/servers/mac/scanfix/config.js.map +1 -1
- package/dist/plugins/servers/ubuntu/index.d.ts +1 -0
- package/dist/plugins/servers/ubuntu/index.d.ts.map +1 -1
- package/dist/types/cli.d.ts +5 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/plugin.d.ts +6 -0
- package/dist/types/plugin.d.ts.map +1 -1
- package/dist/utils/config-helpers.d.ts +14 -1
- package/dist/utils/config-helpers.d.ts.map +1 -1
- package/dist/utils/config-helpers.js +51 -0
- package/dist/utils/config-helpers.js.map +1 -1
- package/dist/utils/interactive-prompts.d.ts +19 -0
- package/dist/utils/interactive-prompts.d.ts.map +1 -0
- package/dist/utils/interactive-prompts.js +101 -0
- package/dist/utils/interactive-prompts.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel Addon Plugin
|
|
3
|
+
*
|
|
4
|
+
* Cloud hosting addon for deploying to Vercel via factiii pipeline.
|
|
5
|
+
* Uses API-first architecture (more stable than CLI).
|
|
6
|
+
* CLI is used only for initial linking and when API doesn't support it.
|
|
7
|
+
*
|
|
8
|
+
* This is an ADDON plugin that extends factiii pipeline. It handles:
|
|
9
|
+
* - Vercel deployment orchestration
|
|
10
|
+
* - Project linking and configuration
|
|
11
|
+
* - Domain management
|
|
12
|
+
*
|
|
13
|
+
* ============================================================
|
|
14
|
+
* API vs CLI Decision Logic
|
|
15
|
+
* ============================================================
|
|
16
|
+
*
|
|
17
|
+
* **Use API when:**
|
|
18
|
+
* - Deploying (more stable, fewer breaking changes)
|
|
19
|
+
* - Checking deployment status
|
|
20
|
+
* - Managing environment variables
|
|
21
|
+
* - Listing projects/deployments
|
|
22
|
+
*
|
|
23
|
+
* **Use CLI when:**
|
|
24
|
+
* - Initial project linking (vercel link)
|
|
25
|
+
* - When user explicitly needs CLI features
|
|
26
|
+
* - API doesn't support the operation
|
|
27
|
+
*
|
|
28
|
+
* ============================================================
|
|
29
|
+
* PLUGIN STRUCTURE STANDARD
|
|
30
|
+
* ============================================================
|
|
31
|
+
*
|
|
32
|
+
* **scanfix/** - Scan/fix operations organized by concern
|
|
33
|
+
* - config.ts - Vercel project configuration
|
|
34
|
+
* - token.ts - VERCEL_TOKEN management
|
|
35
|
+
*
|
|
36
|
+
* **utils/** - Vercel API helpers
|
|
37
|
+
* - vercel-api.ts - API client and helpers
|
|
38
|
+
*
|
|
39
|
+
* **index.ts** - Main plugin class
|
|
40
|
+
* - Static metadata (id, name, category, version)
|
|
41
|
+
* - canReach() - Pipeline routing logic
|
|
42
|
+
* - Imports and combines all scanfix arrays
|
|
43
|
+
* ============================================================
|
|
44
|
+
*/
|
|
45
|
+
import type { FactiiiConfig, DeployResult, Fix, ServerOS } from '../../../types/index.js';
|
|
46
|
+
declare class VercelAddon {
|
|
47
|
+
static readonly id = "vercel";
|
|
48
|
+
static readonly name = "Vercel Addon";
|
|
49
|
+
static readonly category: 'addon';
|
|
50
|
+
static readonly version = "1.0.0";
|
|
51
|
+
/**
|
|
52
|
+
* Server OS types this pipeline is compatible with
|
|
53
|
+
* Vercel is serverless, but we support all dev machine types
|
|
54
|
+
*/
|
|
55
|
+
static readonly compatibleServers: ServerOS[];
|
|
56
|
+
/**
|
|
57
|
+
* Default server (N/A for Vercel - serverless)
|
|
58
|
+
*/
|
|
59
|
+
static readonly defaultServer: ServerOS;
|
|
60
|
+
static readonly requiredEnvVars: string[];
|
|
61
|
+
static readonly configSchema: Record<string, unknown>;
|
|
62
|
+
static readonly autoConfigSchema: Record<string, string>;
|
|
63
|
+
/**
|
|
64
|
+
* Determine if this plugin should be loaded for this project
|
|
65
|
+
* Loads if vercel config exists (factiii pipeline will use this addon as needed)
|
|
66
|
+
*/
|
|
67
|
+
static shouldLoad(_rootDir: string, config: FactiiiConfig): Promise<boolean>;
|
|
68
|
+
static helpText: Record<string, string>;
|
|
69
|
+
/**
|
|
70
|
+
* Check if Vercel is configured and available
|
|
71
|
+
* (Called by factiii pipeline to determine if Vercel deployment is possible)
|
|
72
|
+
*/
|
|
73
|
+
static isVercelConfigured(config: FactiiiConfig): boolean;
|
|
74
|
+
static readonly fixes: Fix[];
|
|
75
|
+
/**
|
|
76
|
+
* Auto-detect Vercel configuration
|
|
77
|
+
*/
|
|
78
|
+
static detectConfig(rootDir: string): Promise<Record<string, unknown>>;
|
|
79
|
+
private _config;
|
|
80
|
+
constructor(config: FactiiiConfig);
|
|
81
|
+
/**
|
|
82
|
+
* Deploy to Vercel (called by factiii pipeline)
|
|
83
|
+
*/
|
|
84
|
+
static deployToVercel(config: FactiiiConfig, options?: {
|
|
85
|
+
production?: boolean;
|
|
86
|
+
branch?: string;
|
|
87
|
+
commit?: string;
|
|
88
|
+
}): Promise<DeployResult>;
|
|
89
|
+
/**
|
|
90
|
+
* Deploy to an environment
|
|
91
|
+
*/
|
|
92
|
+
deploy(config: FactiiiConfig, environment: string): Promise<DeployResult>;
|
|
93
|
+
/**
|
|
94
|
+
* Undeploy is not applicable for Vercel (serverless)
|
|
95
|
+
*/
|
|
96
|
+
undeploy(_config: FactiiiConfig, _environment: string): Promise<DeployResult>;
|
|
97
|
+
}
|
|
98
|
+
export default VercelAddon;
|
|
99
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/addons/vercel/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;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,CAGtD;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;IAiC5E,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"}
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vercel Addon Plugin
|
|
4
|
+
*
|
|
5
|
+
* Cloud hosting addon for deploying to Vercel via factiii pipeline.
|
|
6
|
+
* Uses API-first architecture (more stable than CLI).
|
|
7
|
+
* CLI is used only for initial linking and when API doesn't support it.
|
|
8
|
+
*
|
|
9
|
+
* This is an ADDON plugin that extends factiii pipeline. It handles:
|
|
10
|
+
* - Vercel deployment orchestration
|
|
11
|
+
* - Project linking and configuration
|
|
12
|
+
* - Domain management
|
|
13
|
+
*
|
|
14
|
+
* ============================================================
|
|
15
|
+
* API vs CLI Decision Logic
|
|
16
|
+
* ============================================================
|
|
17
|
+
*
|
|
18
|
+
* **Use API when:**
|
|
19
|
+
* - Deploying (more stable, fewer breaking changes)
|
|
20
|
+
* - Checking deployment status
|
|
21
|
+
* - Managing environment variables
|
|
22
|
+
* - Listing projects/deployments
|
|
23
|
+
*
|
|
24
|
+
* **Use CLI when:**
|
|
25
|
+
* - Initial project linking (vercel link)
|
|
26
|
+
* - When user explicitly needs CLI features
|
|
27
|
+
* - API doesn't support the operation
|
|
28
|
+
*
|
|
29
|
+
* ============================================================
|
|
30
|
+
* PLUGIN STRUCTURE STANDARD
|
|
31
|
+
* ============================================================
|
|
32
|
+
*
|
|
33
|
+
* **scanfix/** - Scan/fix operations organized by concern
|
|
34
|
+
* - config.ts - Vercel project configuration
|
|
35
|
+
* - token.ts - VERCEL_TOKEN management
|
|
36
|
+
*
|
|
37
|
+
* **utils/** - Vercel API helpers
|
|
38
|
+
* - vercel-api.ts - API client and helpers
|
|
39
|
+
*
|
|
40
|
+
* **index.ts** - Main plugin class
|
|
41
|
+
* - Static metadata (id, name, category, version)
|
|
42
|
+
* - canReach() - Pipeline routing logic
|
|
43
|
+
* - Imports and combines all scanfix arrays
|
|
44
|
+
* ============================================================
|
|
45
|
+
*/
|
|
46
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
47
|
+
if (k2 === undefined) k2 = k;
|
|
48
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
49
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
50
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
51
|
+
}
|
|
52
|
+
Object.defineProperty(o, k2, desc);
|
|
53
|
+
}) : (function(o, m, k, k2) {
|
|
54
|
+
if (k2 === undefined) k2 = k;
|
|
55
|
+
o[k2] = m[k];
|
|
56
|
+
}));
|
|
57
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
58
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
59
|
+
}) : function(o, v) {
|
|
60
|
+
o["default"] = v;
|
|
61
|
+
});
|
|
62
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
63
|
+
var ownKeys = function(o) {
|
|
64
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
65
|
+
var ar = [];
|
|
66
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
67
|
+
return ar;
|
|
68
|
+
};
|
|
69
|
+
return ownKeys(o);
|
|
70
|
+
};
|
|
71
|
+
return function (mod) {
|
|
72
|
+
if (mod && mod.__esModule) return mod;
|
|
73
|
+
var result = {};
|
|
74
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
75
|
+
__setModuleDefault(result, mod);
|
|
76
|
+
return result;
|
|
77
|
+
};
|
|
78
|
+
})();
|
|
79
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
80
|
+
// Import scanfixes
|
|
81
|
+
const config_js_1 = require("./scanfix/config.js");
|
|
82
|
+
const token_js_1 = require("./scanfix/token.js");
|
|
83
|
+
class VercelAddon {
|
|
84
|
+
// ============================================================
|
|
85
|
+
// STATIC METADATA
|
|
86
|
+
// ============================================================
|
|
87
|
+
static id = 'vercel';
|
|
88
|
+
static name = 'Vercel Addon';
|
|
89
|
+
static category = 'addon';
|
|
90
|
+
static version = '1.0.0';
|
|
91
|
+
/**
|
|
92
|
+
* Server OS types this pipeline is compatible with
|
|
93
|
+
* Vercel is serverless, but we support all dev machine types
|
|
94
|
+
*/
|
|
95
|
+
static compatibleServers = ['mac', 'ubuntu', 'windows'];
|
|
96
|
+
/**
|
|
97
|
+
* Default server (N/A for Vercel - serverless)
|
|
98
|
+
*/
|
|
99
|
+
static defaultServer = 'ubuntu';
|
|
100
|
+
// Env vars this plugin requires
|
|
101
|
+
static requiredEnvVars = ['VERCEL_TOKEN'];
|
|
102
|
+
// Schema for stack.yml (user-editable)
|
|
103
|
+
static configSchema = {
|
|
104
|
+
vercel: {
|
|
105
|
+
project_name: 'EXAMPLE_my-project',
|
|
106
|
+
org_id: 'EXAMPLE_team_xxx',
|
|
107
|
+
project_id: 'EXAMPLE_prj_xxx',
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
// Schema for stackAuto.yml (auto-detected)
|
|
111
|
+
static autoConfigSchema = {
|
|
112
|
+
vercel_cli_installed: 'boolean',
|
|
113
|
+
vercel_project_linked: 'boolean',
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Determine if this plugin should be loaded for this project
|
|
117
|
+
* Loads if vercel config exists (factiii pipeline will use this addon as needed)
|
|
118
|
+
*/
|
|
119
|
+
static async shouldLoad(_rootDir, config) {
|
|
120
|
+
// Load if top-level vercel config exists
|
|
121
|
+
if (config.vercel?.project_name || config.vercel?.project_id) {
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
// Load if vercel section exists in any environment
|
|
125
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../utils/config-helpers.js')));
|
|
126
|
+
const environments = extractEnvironments(config);
|
|
127
|
+
for (const env of Object.values(environments)) {
|
|
128
|
+
if (env.vercel) {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
static helpText = {
|
|
135
|
+
VERCEL_TOKEN: `
|
|
136
|
+
Vercel API Token for deployments.
|
|
137
|
+
|
|
138
|
+
Get from: https://vercel.com/account/tokens
|
|
139
|
+
|
|
140
|
+
Create a new token with:
|
|
141
|
+
- Scope: Full Account (or specific team)
|
|
142
|
+
- Expiration: No Expiration (or custom)
|
|
143
|
+
|
|
144
|
+
The token will be stored securely in Ansible Vault.`,
|
|
145
|
+
};
|
|
146
|
+
// ============================================================
|
|
147
|
+
// PIPELINE-SPECIFIC METHODS
|
|
148
|
+
// ============================================================
|
|
149
|
+
/**
|
|
150
|
+
* Check if Vercel is configured and available
|
|
151
|
+
* (Called by factiii pipeline to determine if Vercel deployment is possible)
|
|
152
|
+
*/
|
|
153
|
+
static isVercelConfigured(config) {
|
|
154
|
+
// Check if vercel config exists
|
|
155
|
+
if (config.vercel?.project_name) {
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
// ============================================================
|
|
161
|
+
// FIXES - All issues this plugin can detect and resolve
|
|
162
|
+
// ============================================================
|
|
163
|
+
static fixes = [
|
|
164
|
+
...config_js_1.fixes,
|
|
165
|
+
...token_js_1.fixes,
|
|
166
|
+
];
|
|
167
|
+
// ============================================================
|
|
168
|
+
// STATIC HELPER METHODS
|
|
169
|
+
// ============================================================
|
|
170
|
+
/**
|
|
171
|
+
* Auto-detect Vercel configuration
|
|
172
|
+
*/
|
|
173
|
+
static async detectConfig(rootDir) {
|
|
174
|
+
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
|
+
// Check if project is linked (.vercel/project.json)
|
|
185
|
+
try {
|
|
186
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
187
|
+
const path = await Promise.resolve().then(() => __importStar(require('path')));
|
|
188
|
+
const vercelConfigPath = path.join(rootDir, '.vercel', 'project.json');
|
|
189
|
+
if (fs.existsSync(vercelConfigPath)) {
|
|
190
|
+
detected.vercel_project_linked = true;
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
detected.vercel_project_linked = false;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
detected.vercel_project_linked = false;
|
|
198
|
+
}
|
|
199
|
+
return detected;
|
|
200
|
+
}
|
|
201
|
+
// ============================================================
|
|
202
|
+
// INSTANCE METHODS
|
|
203
|
+
// ============================================================
|
|
204
|
+
_config;
|
|
205
|
+
constructor(config) {
|
|
206
|
+
this._config = config;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Deploy to Vercel (called by factiii pipeline)
|
|
210
|
+
*/
|
|
211
|
+
static async deployToVercel(config, options = {}) {
|
|
212
|
+
const { deployToVercel } = await Promise.resolve().then(() => __importStar(require('./utils/vercel-api.js')));
|
|
213
|
+
return deployToVercel(config, options);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Deploy to an environment
|
|
217
|
+
*/
|
|
218
|
+
async deploy(config, environment) {
|
|
219
|
+
const { deployToVercel } = await Promise.resolve().then(() => __importStar(require('./utils/vercel-api.js')));
|
|
220
|
+
const production = environment === 'prod';
|
|
221
|
+
return deployToVercel(config, { production });
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Undeploy is not applicable for Vercel (serverless)
|
|
225
|
+
*/
|
|
226
|
+
async undeploy(_config, _environment) {
|
|
227
|
+
return {
|
|
228
|
+
success: false,
|
|
229
|
+
error: 'Undeploy not supported for Vercel. Deployments are immutable. Use Vercel dashboard to delete.',
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
exports.default = VercelAddon;
|
|
234
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/addons/vercel/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAGtD,eAAO,MAAM,KAAK,EAAE,GAAG,EAuJtB,CAAC"}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Vercel Configuration Scanfixes
|
|
4
|
+
*
|
|
5
|
+
* Detects and fixes Vercel project configuration issues.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.fixes = void 0;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
exports.fixes = [
|
|
45
|
+
{
|
|
46
|
+
id: 'vercel-config-missing',
|
|
47
|
+
stage: 'dev',
|
|
48
|
+
severity: 'critical',
|
|
49
|
+
description: 'Vercel configuration missing in stack.yml',
|
|
50
|
+
scan: async (config, _rootDir) => {
|
|
51
|
+
// Skip if vercel not configured
|
|
52
|
+
if (!config.vercel)
|
|
53
|
+
return false;
|
|
54
|
+
// Check required fields
|
|
55
|
+
const projectName = config.vercel.project_name;
|
|
56
|
+
if (!projectName || projectName.toUpperCase().startsWith('EXAMPLE')) {
|
|
57
|
+
return true; // Problem: missing or example project name
|
|
58
|
+
}
|
|
59
|
+
return false; // Configured properly
|
|
60
|
+
},
|
|
61
|
+
fix: null,
|
|
62
|
+
manualFix: `
|
|
63
|
+
Add Vercel configuration to stack.yml:
|
|
64
|
+
|
|
65
|
+
vercel:
|
|
66
|
+
project_name: my-project
|
|
67
|
+
org_id: team_xxx # Optional: your Vercel team/org ID
|
|
68
|
+
project_id: prj_xxx # Optional: auto-detected after linking
|
|
69
|
+
|
|
70
|
+
Then link your project:
|
|
71
|
+
vercel link
|
|
72
|
+
|
|
73
|
+
Or use the Vercel dashboard to create a project and add the IDs to stack.yml.
|
|
74
|
+
`,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: 'vercel-project-not-linked',
|
|
78
|
+
stage: 'dev',
|
|
79
|
+
severity: 'warning',
|
|
80
|
+
description: 'Vercel project not linked (missing .vercel/project.json)',
|
|
81
|
+
scan: async (config, rootDir) => {
|
|
82
|
+
// Check if vercel pipeline is used
|
|
83
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
|
|
84
|
+
const environments = extractEnvironments(config);
|
|
85
|
+
const usesVercel = Object.values(environments).some((env) => env.pipeline === 'vercel');
|
|
86
|
+
if (!usesVercel) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
// Check if .vercel/project.json exists
|
|
90
|
+
const vercelConfigPath = path.join(rootDir, '.vercel', 'project.json');
|
|
91
|
+
if (!fs.existsSync(vercelConfigPath)) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
return true;
|
|
95
|
+
},
|
|
96
|
+
fix: null,
|
|
97
|
+
manualFix: `
|
|
98
|
+
Link your project to Vercel:
|
|
99
|
+
|
|
100
|
+
vercel link
|
|
101
|
+
|
|
102
|
+
This will:
|
|
103
|
+
1. Prompt you to select your Vercel team/org
|
|
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.
|
|
109
|
+
`,
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
id: 'vercel-cli-not-installed',
|
|
113
|
+
stage: 'dev',
|
|
114
|
+
severity: 'warning',
|
|
115
|
+
description: 'Vercel CLI not installed (needed for initial linking)',
|
|
116
|
+
scan: async (config, _rootDir) => {
|
|
117
|
+
// Skip if vercel not configured
|
|
118
|
+
if (!config.vercel)
|
|
119
|
+
return false;
|
|
120
|
+
// Check if vercel CLI is installed
|
|
121
|
+
try {
|
|
122
|
+
const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
|
|
123
|
+
execSync('which vercel', { stdio: 'pipe' });
|
|
124
|
+
return false; // CLI installed = no problem
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return true; // CLI not installed = problem
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
fix: async (_config, _rootDir) => {
|
|
131
|
+
console.log(' Installing Vercel CLI globally...');
|
|
132
|
+
const { execSync } = await Promise.resolve().then(() => __importStar(require('child_process')));
|
|
133
|
+
try {
|
|
134
|
+
execSync('npm install -g vercel', { stdio: 'inherit' });
|
|
135
|
+
console.log(' [OK] Vercel CLI installed');
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
console.log(' [!] Failed to install Vercel CLI: ' + (e instanceof Error ? e.message : String(e)));
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
manualFix: 'Install Vercel CLI manually: npm install -g vercel',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
id: 'vercel-gitignore-missing',
|
|
147
|
+
stage: 'dev',
|
|
148
|
+
severity: 'info',
|
|
149
|
+
description: '.vercel directory not in .gitignore',
|
|
150
|
+
scan: async (config, rootDir) => {
|
|
151
|
+
// Check if vercel pipeline is used
|
|
152
|
+
const { extractEnvironments } = await Promise.resolve().then(() => __importStar(require('../../../../utils/config-helpers.js')));
|
|
153
|
+
const environments = extractEnvironments(config);
|
|
154
|
+
const usesVercel = Object.values(environments).some((env) => env.pipeline === 'vercel');
|
|
155
|
+
if (!usesVercel) {
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
// Check if .vercel is in .gitignore
|
|
159
|
+
const { isGitignored } = await Promise.resolve().then(() => __importStar(require('../../../../utils/gitignore.js')));
|
|
160
|
+
const isIgnored = await isGitignored('.vercel', rootDir);
|
|
161
|
+
if (!isIgnored) {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
return true;
|
|
165
|
+
},
|
|
166
|
+
fix: async (_config, rootDir) => {
|
|
167
|
+
console.log(' Adding .vercel to .gitignore...');
|
|
168
|
+
const { ensureGitignored } = await Promise.resolve().then(() => __importStar(require('../../../../utils/gitignore.js')));
|
|
169
|
+
try {
|
|
170
|
+
await ensureGitignored('.vercel', rootDir);
|
|
171
|
+
console.log(' [OK] .vercel added to .gitignore');
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
console.log(' [!] Failed to update .gitignore: ' + (e instanceof Error ? e.message : String(e)));
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
manualFix: 'Add .vercel to .gitignore manually: echo ".vercel" >> .gitignore',
|
|
180
|
+
},
|
|
181
|
+
];
|
|
182
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../../../src/plugins/addons/vercel/scanfix/token.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAItD,eAAO,MAAM,KAAK,EAAE,GAAG,EAsFtB,CAAC"}
|