@rmartz/envctl 3.1.1
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/README.md +79 -0
- package/dist/envctl.d.ts +3 -0
- package/dist/envctl.d.ts.map +1 -0
- package/dist/envctl.js +36 -0
- package/dist/envctl.js.map +1 -0
- package/dist/lib/auth.d.ts +21 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +148 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/check-firebase.d.ts +6 -0
- package/dist/lib/check-firebase.d.ts.map +1 -0
- package/dist/lib/check-firebase.js +81 -0
- package/dist/lib/check-firebase.js.map +1 -0
- package/dist/lib/check-live.d.ts +3 -0
- package/dist/lib/check-live.d.ts.map +1 -0
- package/dist/lib/check-live.js +50 -0
- package/dist/lib/check-live.js.map +1 -0
- package/dist/lib/check.d.ts +9 -0
- package/dist/lib/check.d.ts.map +1 -0
- package/dist/lib/check.js +165 -0
- package/dist/lib/check.js.map +1 -0
- package/dist/lib/cli/help.d.ts +4 -0
- package/dist/lib/cli/help.d.ts.map +1 -0
- package/dist/lib/cli/help.js +52 -0
- package/dist/lib/cli/help.js.map +1 -0
- package/dist/lib/cli/registry.d.ts +19 -0
- package/dist/lib/cli/registry.d.ts.map +1 -0
- package/dist/lib/cli/registry.js +111 -0
- package/dist/lib/cli/registry.js.map +1 -0
- package/dist/lib/cli/router.d.ts +22 -0
- package/dist/lib/cli/router.d.ts.map +1 -0
- package/dist/lib/cli/router.js +98 -0
- package/dist/lib/cli/router.js.map +1 -0
- package/dist/lib/cli/version.d.ts +2 -0
- package/dist/lib/cli/version.d.ts.map +1 -0
- package/dist/lib/cli/version.js +58 -0
- package/dist/lib/cli/version.js.map +1 -0
- package/dist/lib/commands/auth.d.ts +2 -0
- package/dist/lib/commands/auth.d.ts.map +1 -0
- package/dist/lib/commands/auth.js +33 -0
- package/dist/lib/commands/auth.js.map +1 -0
- package/dist/lib/commands/bootstrap-args.d.ts +11 -0
- package/dist/lib/commands/bootstrap-args.d.ts.map +1 -0
- package/dist/lib/commands/bootstrap-args.js +111 -0
- package/dist/lib/commands/bootstrap-args.js.map +1 -0
- package/dist/lib/commands/bootstrap.d.ts +5 -0
- package/dist/lib/commands/bootstrap.d.ts.map +1 -0
- package/dist/lib/commands/bootstrap.js +166 -0
- package/dist/lib/commands/bootstrap.js.map +1 -0
- package/dist/lib/commands/check.d.ts +3 -0
- package/dist/lib/commands/check.d.ts.map +1 -0
- package/dist/lib/commands/check.js +47 -0
- package/dist/lib/commands/check.js.map +1 -0
- package/dist/lib/commands/config-pull.d.ts +12 -0
- package/dist/lib/commands/config-pull.d.ts.map +1 -0
- package/dist/lib/commands/config-pull.js +161 -0
- package/dist/lib/commands/config-pull.js.map +1 -0
- package/dist/lib/commands/config-push-args.d.ts +9 -0
- package/dist/lib/commands/config-push-args.d.ts.map +1 -0
- package/dist/lib/commands/config-push-args.js +108 -0
- package/dist/lib/commands/config-push-args.js.map +1 -0
- package/dist/lib/commands/config-push.d.ts +6 -0
- package/dist/lib/commands/config-push.d.ts.map +1 -0
- package/dist/lib/commands/config-push.js +166 -0
- package/dist/lib/commands/config-push.js.map +1 -0
- package/dist/lib/commands/deployment-config.d.ts +9 -0
- package/dist/lib/commands/deployment-config.d.ts.map +1 -0
- package/dist/lib/commands/deployment-config.js +73 -0
- package/dist/lib/commands/deployment-config.js.map +1 -0
- package/dist/lib/commands/env-plan.d.ts +4 -0
- package/dist/lib/commands/env-plan.d.ts.map +1 -0
- package/dist/lib/commands/env-plan.js +85 -0
- package/dist/lib/commands/env-plan.js.map +1 -0
- package/dist/lib/commands/env.d.ts +4 -0
- package/dist/lib/commands/env.d.ts.map +1 -0
- package/dist/lib/commands/env.js +122 -0
- package/dist/lib/commands/env.js.map +1 -0
- package/dist/lib/commands/init.d.ts +3 -0
- package/dist/lib/commands/init.d.ts.map +1 -0
- package/dist/lib/commands/init.js +59 -0
- package/dist/lib/commands/init.js.map +1 -0
- package/dist/lib/commands/secrets-args.d.ts +13 -0
- package/dist/lib/commands/secrets-args.d.ts.map +1 -0
- package/dist/lib/commands/secrets-args.js +136 -0
- package/dist/lib/commands/secrets-args.js.map +1 -0
- package/dist/lib/commands/secrets-plan.d.ts +9 -0
- package/dist/lib/commands/secrets-plan.d.ts.map +1 -0
- package/dist/lib/commands/secrets-plan.js +109 -0
- package/dist/lib/commands/secrets-plan.js.map +1 -0
- package/dist/lib/commands/secrets.d.ts +7 -0
- package/dist/lib/commands/secrets.d.ts.map +1 -0
- package/dist/lib/commands/secrets.js +191 -0
- package/dist/lib/commands/secrets.js.map +1 -0
- package/dist/lib/deployments.d.ts +4 -0
- package/dist/lib/deployments.d.ts.map +1 -0
- package/dist/lib/deployments.js +83 -0
- package/dist/lib/deployments.js.map +1 -0
- package/dist/lib/environments.d.ts +4 -0
- package/dist/lib/environments.d.ts.map +1 -0
- package/dist/lib/environments.js +97 -0
- package/dist/lib/environments.js.map +1 -0
- package/dist/lib/firebase-credential.d.ts +28 -0
- package/dist/lib/firebase-credential.d.ts.map +1 -0
- package/dist/lib/firebase-credential.js +50 -0
- package/dist/lib/firebase-credential.js.map +1 -0
- package/dist/lib/firebase-invalidate.d.ts +4 -0
- package/dist/lib/firebase-invalidate.d.ts.map +1 -0
- package/dist/lib/firebase-invalidate.js +61 -0
- package/dist/lib/firebase-invalidate.js.map +1 -0
- package/dist/lib/firebase-vars.d.ts +14 -0
- package/dist/lib/firebase-vars.d.ts.map +1 -0
- package/dist/lib/firebase-vars.js +40 -0
- package/dist/lib/firebase-vars.js.map +1 -0
- package/dist/lib/firebase.d.ts +20 -0
- package/dist/lib/firebase.d.ts.map +1 -0
- package/dist/lib/firebase.js +189 -0
- package/dist/lib/firebase.js.map +1 -0
- package/dist/lib/gcp.d.ts +4 -0
- package/dist/lib/gcp.d.ts.map +1 -0
- package/dist/lib/gcp.js +53 -0
- package/dist/lib/gcp.js.map +1 -0
- package/dist/lib/generated-secrets.d.ts +16 -0
- package/dist/lib/generated-secrets.d.ts.map +1 -0
- package/dist/lib/generated-secrets.js +68 -0
- package/dist/lib/generated-secrets.js.map +1 -0
- package/dist/lib/logger.d.ts +7 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +60 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/manifest/index.d.ts +6 -0
- package/dist/lib/manifest/index.d.ts.map +1 -0
- package/dist/lib/manifest/index.js +15 -0
- package/dist/lib/manifest/index.js.map +1 -0
- package/dist/lib/manifest/parse.d.ts +11 -0
- package/dist/lib/manifest/parse.d.ts.map +1 -0
- package/dist/lib/manifest/parse.js +214 -0
- package/dist/lib/manifest/parse.js.map +1 -0
- package/dist/lib/manifest/resolve.d.ts +9 -0
- package/dist/lib/manifest/resolve.d.ts.map +1 -0
- package/dist/lib/manifest/resolve.js +34 -0
- package/dist/lib/manifest/resolve.js.map +1 -0
- package/dist/lib/manifest/types.d.ts +57 -0
- package/dist/lib/manifest/types.d.ts.map +1 -0
- package/dist/lib/manifest/types.js +12 -0
- package/dist/lib/manifest/types.js.map +1 -0
- package/dist/lib/manifest/write.d.ts +3 -0
- package/dist/lib/manifest/write.d.ts.map +1 -0
- package/dist/lib/manifest/write.js +110 -0
- package/dist/lib/manifest/write.js.map +1 -0
- package/dist/lib/project.d.ts +6 -0
- package/dist/lib/project.d.ts.map +1 -0
- package/dist/lib/project.js +56 -0
- package/dist/lib/project.js.map +1 -0
- package/dist/lib/providers/deployment.d.ts +19 -0
- package/dist/lib/providers/deployment.d.ts.map +1 -0
- package/dist/lib/providers/deployment.js +62 -0
- package/dist/lib/providers/deployment.js.map +1 -0
- package/dist/lib/providers/registry.d.ts +5 -0
- package/dist/lib/providers/registry.d.ts.map +1 -0
- package/dist/lib/providers/registry.js +31 -0
- package/dist/lib/providers/registry.js.map +1 -0
- package/dist/lib/providers/service.d.ts +35 -0
- package/dist/lib/providers/service.d.ts.map +1 -0
- package/dist/lib/providers/service.js +81 -0
- package/dist/lib/providers/service.js.map +1 -0
- package/dist/lib/rotation-preflight.d.ts +11 -0
- package/dist/lib/rotation-preflight.d.ts.map +1 -0
- package/dist/lib/rotation-preflight.js +47 -0
- package/dist/lib/rotation-preflight.js.map +1 -0
- package/dist/lib/rotation.d.ts +33 -0
- package/dist/lib/rotation.d.ts.map +1 -0
- package/dist/lib/rotation.js +168 -0
- package/dist/lib/rotation.js.map +1 -0
- package/dist/lib/sentry.d.ts +5 -0
- package/dist/lib/sentry.d.ts.map +1 -0
- package/dist/lib/sentry.js +132 -0
- package/dist/lib/sentry.js.map +1 -0
- package/dist/lib/subprocess.d.ts +8 -0
- package/dist/lib/subprocess.d.ts.map +1 -0
- package/dist/lib/subprocess.js +30 -0
- package/dist/lib/subprocess.js.map +1 -0
- package/dist/lib/targets.d.ts +3 -0
- package/dist/lib/targets.d.ts.map +1 -0
- package/dist/lib/targets.js +25 -0
- package/dist/lib/targets.js.map +1 -0
- package/dist/lib/vercel-api.d.ts +50 -0
- package/dist/lib/vercel-api.d.ts.map +1 -0
- package/dist/lib/vercel-api.js +176 -0
- package/dist/lib/vercel-api.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.MANIFEST_FILENAME = void 0;
|
|
37
|
+
exports.manifestFilePath = manifestFilePath;
|
|
38
|
+
exports.parseManifest = parseManifest;
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const yaml_1 = require("yaml");
|
|
42
|
+
const environments_1 = require("../environments");
|
|
43
|
+
exports.MANIFEST_FILENAME = "manifest.yml";
|
|
44
|
+
function manifestFilePath(deploymentDir) {
|
|
45
|
+
return path.join(deploymentDir, exports.MANIFEST_FILENAME);
|
|
46
|
+
}
|
|
47
|
+
// ─── Field parsers (each tolerates malformed input by ignoring it) ──────────
|
|
48
|
+
function asStringArray(value) {
|
|
49
|
+
if (!Array.isArray(value))
|
|
50
|
+
return [];
|
|
51
|
+
return value.filter((v) => typeof v === "string");
|
|
52
|
+
}
|
|
53
|
+
function isRecord(value) {
|
|
54
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
55
|
+
}
|
|
56
|
+
function parseVariableSource(spec) {
|
|
57
|
+
if (!isRecord(spec))
|
|
58
|
+
return undefined;
|
|
59
|
+
const { value, generate } = spec;
|
|
60
|
+
if (typeof value === "string" ||
|
|
61
|
+
typeof value === "number" ||
|
|
62
|
+
typeof value === "boolean")
|
|
63
|
+
return { kind: "value", value: String(value) };
|
|
64
|
+
if (generate === true)
|
|
65
|
+
return { kind: "generate" };
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
function parseVariables(raw) {
|
|
69
|
+
if (!isRecord(raw))
|
|
70
|
+
return [];
|
|
71
|
+
const out = [];
|
|
72
|
+
for (const [name, spec] of Object.entries(raw)) {
|
|
73
|
+
const source = parseVariableSource(spec);
|
|
74
|
+
if (source)
|
|
75
|
+
out.push({ name, source });
|
|
76
|
+
}
|
|
77
|
+
return out;
|
|
78
|
+
}
|
|
79
|
+
function parseStringMap(raw) {
|
|
80
|
+
if (!isRecord(raw))
|
|
81
|
+
return {};
|
|
82
|
+
const out = {};
|
|
83
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
84
|
+
if (typeof value === "string")
|
|
85
|
+
out[key] = value;
|
|
86
|
+
}
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
function parseServices(raw) {
|
|
90
|
+
if (!Array.isArray(raw))
|
|
91
|
+
return [];
|
|
92
|
+
const out = [];
|
|
93
|
+
for (const item of raw) {
|
|
94
|
+
if (!isRecord(item) || typeof item.provider !== "string")
|
|
95
|
+
continue;
|
|
96
|
+
const service = { provider: item.provider };
|
|
97
|
+
if ("environments" in item)
|
|
98
|
+
service.environments = asStringArray(item.environments);
|
|
99
|
+
if ("variables" in item)
|
|
100
|
+
service.variables = parseStringMap(item.variables);
|
|
101
|
+
out.push(service);
|
|
102
|
+
}
|
|
103
|
+
return out;
|
|
104
|
+
}
|
|
105
|
+
function parseDeployments(raw) {
|
|
106
|
+
if (!Array.isArray(raw))
|
|
107
|
+
return [];
|
|
108
|
+
const out = [];
|
|
109
|
+
for (const item of raw) {
|
|
110
|
+
if (!isRecord(item) || typeof item.provider !== "string")
|
|
111
|
+
continue;
|
|
112
|
+
const targets = {};
|
|
113
|
+
if (isRecord(item.targets)) {
|
|
114
|
+
for (const [env, target] of Object.entries(item.targets)) {
|
|
115
|
+
if (typeof target === "string")
|
|
116
|
+
targets[env] = target;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
out.push({ provider: item.provider, targets });
|
|
120
|
+
}
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
function parseVariableGroups(raw) {
|
|
124
|
+
if (!Array.isArray(raw))
|
|
125
|
+
return [];
|
|
126
|
+
const out = [];
|
|
127
|
+
for (const item of raw) {
|
|
128
|
+
if (!isRecord(item) || typeof item.name !== "string")
|
|
129
|
+
continue;
|
|
130
|
+
const variables = parseVariables(item.variables);
|
|
131
|
+
out.push("environments" in item
|
|
132
|
+
? {
|
|
133
|
+
name: item.name,
|
|
134
|
+
environments: asStringArray(item.environments),
|
|
135
|
+
variables,
|
|
136
|
+
}
|
|
137
|
+
: { name: item.name, variables });
|
|
138
|
+
}
|
|
139
|
+
return out;
|
|
140
|
+
}
|
|
141
|
+
// Per-environment overlay files hold only literal `value` overrides. They share
|
|
142
|
+
// the legacy per-env file format (flat or nested `variables:`), so they parse
|
|
143
|
+
// through the existing reader.
|
|
144
|
+
function readOverlays(deploymentDir, environments) {
|
|
145
|
+
const base = path.resolve(deploymentDir);
|
|
146
|
+
const overlays = {};
|
|
147
|
+
for (const env of environments) {
|
|
148
|
+
if (path.dirname(path.resolve(deploymentDir, `${env}.yml`)) !== base) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const values = (0, environments_1.parseDeploymentEnv)(deploymentDir, env);
|
|
152
|
+
if (Object.keys(values).length > 0)
|
|
153
|
+
overlays[env] = values;
|
|
154
|
+
}
|
|
155
|
+
return overlays;
|
|
156
|
+
}
|
|
157
|
+
// ─── Entry point ───────────────────────────────────────────────────────────
|
|
158
|
+
/**
|
|
159
|
+
* Parse a project's deployment configuration into the resolved model. Reads
|
|
160
|
+
* `deployment/manifest.yml` when present; otherwise falls back to the legacy
|
|
161
|
+
* flat format (`environments.yml` + per-env value files) mapped onto the same
|
|
162
|
+
* model, so existing projects parse unchanged.
|
|
163
|
+
*/
|
|
164
|
+
function parseManifest(deploymentDir) {
|
|
165
|
+
const file = manifestFilePath(deploymentDir);
|
|
166
|
+
return fs.existsSync(file)
|
|
167
|
+
? parseManifestFile(deploymentDir, file)
|
|
168
|
+
: parseLegacy(deploymentDir);
|
|
169
|
+
}
|
|
170
|
+
function parseManifestFile(deploymentDir, file) {
|
|
171
|
+
const content = fs.readFileSync(file, "utf-8");
|
|
172
|
+
const parsed = content.trim() === "" ? {} : (0, yaml_1.parse)(content);
|
|
173
|
+
const raw = (isRecord(parsed) ? parsed : {});
|
|
174
|
+
// When the manifest has no `environments` key (e.g. created by `env add
|
|
175
|
+
// --target` which writes only a `deployments` block), fall back to
|
|
176
|
+
// environments.yml so the hybrid state returns the correct env list.
|
|
177
|
+
const environments = raw.environments !== undefined
|
|
178
|
+
? asStringArray(raw.environments)
|
|
179
|
+
: fs.existsSync(path.join(deploymentDir, "environments.yml"))
|
|
180
|
+
? (0, environments_1.listActiveEnvs)(deploymentDir)
|
|
181
|
+
: [];
|
|
182
|
+
return {
|
|
183
|
+
environments,
|
|
184
|
+
deployments: parseDeployments(raw.deployments),
|
|
185
|
+
services: parseServices(raw.services),
|
|
186
|
+
variables: parseVariables(raw.variables),
|
|
187
|
+
variableGroups: parseVariableGroups(raw.variableGroups),
|
|
188
|
+
overlays: readOverlays(deploymentDir, environments),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
// Back-compat: no manifest.yml. Map the legacy `environments.yml` (active list)
|
|
192
|
+
// and flat per-env value files onto the model — each env name defaulted through
|
|
193
|
+
// vercelTarget() under a single implicit vercel deployment, and every per-env
|
|
194
|
+
// var treated as a literal `value` overlay. Legacy config has no place to
|
|
195
|
+
// declare services, top-level variables, or groups, so those stay empty.
|
|
196
|
+
function parseLegacy(deploymentDir) {
|
|
197
|
+
// listActiveEnvs reads environments.yml directly (it does not guard the file's
|
|
198
|
+
// existence), so a project with no config at all degrades to an empty model.
|
|
199
|
+
const environments = fs.existsSync(path.join(deploymentDir, "environments.yml"))
|
|
200
|
+
? (0, environments_1.listActiveEnvs)(deploymentDir)
|
|
201
|
+
: [];
|
|
202
|
+
const targets = {};
|
|
203
|
+
for (const env of environments)
|
|
204
|
+
targets[env] = (0, environments_1.vercelTarget)(env);
|
|
205
|
+
return {
|
|
206
|
+
environments,
|
|
207
|
+
deployments: environments.length > 0 ? [{ provider: "vercel", targets }] : [],
|
|
208
|
+
services: [],
|
|
209
|
+
variables: [],
|
|
210
|
+
variableGroups: [],
|
|
211
|
+
overlays: readOverlays(deploymentDir, environments),
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/lib/manifest/parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ResolvedManifest } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* The effective literal value of a variable in an environment: a per-env
|
|
4
|
+
* overlay override wins over the declared base `value`. Returns `undefined`
|
|
5
|
+
* when the variable has no literal value there — unknown, or a non-literal
|
|
6
|
+
* source (`generate`/service) that carries no value in git.
|
|
7
|
+
*/
|
|
8
|
+
export declare function effectiveValue(manifest: ResolvedManifest, env: string, name: string): string | undefined;
|
|
9
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/lib/manifest/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,SAAS,CAAC;AAmB9D;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,gBAAgB,EAC1B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAMpB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.effectiveValue = effectiveValue;
|
|
4
|
+
// Find a variable's declaration visible in an environment: a top-level
|
|
5
|
+
// (all-env) variable, else a group variable whose group is scoped to the env.
|
|
6
|
+
function findDeclaration(manifest, env, name) {
|
|
7
|
+
const top = manifest.variables.find((v) => v.name === name);
|
|
8
|
+
if (top)
|
|
9
|
+
return top;
|
|
10
|
+
for (const group of manifest.variableGroups) {
|
|
11
|
+
if (group.environments && !group.environments.includes(env))
|
|
12
|
+
continue;
|
|
13
|
+
const found = group.variables.find((v) => v.name === name);
|
|
14
|
+
if (found)
|
|
15
|
+
return found;
|
|
16
|
+
}
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The effective literal value of a variable in an environment: a per-env
|
|
21
|
+
* overlay override wins over the declared base `value`. Returns `undefined`
|
|
22
|
+
* when the variable has no literal value there — unknown, or a non-literal
|
|
23
|
+
* source (`generate`/service) that carries no value in git.
|
|
24
|
+
*/
|
|
25
|
+
function effectiveValue(manifest, env, name) {
|
|
26
|
+
const decl = findDeclaration(manifest, env, name);
|
|
27
|
+
if (decl !== undefined && decl.source.kind !== "value")
|
|
28
|
+
return undefined;
|
|
29
|
+
const overlay = manifest.overlays[env]?.[name];
|
|
30
|
+
if (overlay !== undefined)
|
|
31
|
+
return overlay;
|
|
32
|
+
return decl?.source.kind === "value" ? decl.source.value : undefined;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/lib/manifest/resolve.ts"],"names":[],"mappings":";;AAyBA,wCAUC;AAjCD,uEAAuE;AACvE,8EAA8E;AAC9E,SAAS,eAAe,CACtB,QAA0B,EAC1B,GAAW,EACX,IAAY;IAEZ,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5D,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5C,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QACtE,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC3D,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,QAA0B,EAC1B,GAAW,EACX,IAAY;IAEZ,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAC;IACzE,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC1C,OAAO,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Where a variable's value comes from. Visibility is *derived* from the source
|
|
3
|
+
* (see {@link variableVisibility}) rather than tracked as a separate flag: a
|
|
4
|
+
* literal `value` lives in git and is public; everything else is a secret.
|
|
5
|
+
*/
|
|
6
|
+
export type VariableSource = {
|
|
7
|
+
readonly kind: "value";
|
|
8
|
+
readonly value: string;
|
|
9
|
+
} | {
|
|
10
|
+
readonly kind: "generate";
|
|
11
|
+
};
|
|
12
|
+
export interface VariableDecl {
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly source: VariableSource;
|
|
15
|
+
}
|
|
16
|
+
/** A provider-typed source of secret variables + rotation (firebase, sentry). */
|
|
17
|
+
export interface ServiceDecl {
|
|
18
|
+
readonly provider: string;
|
|
19
|
+
/** Environments this service is scoped to; `undefined` ⇒ every environment. */
|
|
20
|
+
readonly environments?: readonly string[];
|
|
21
|
+
/**
|
|
22
|
+
* Maps each provider credential *field* to the exact env var name the app
|
|
23
|
+
* reads (#98), e.g. `{ privateKey: "FB_PRIVATE_KEY" }`. Fields left out fall
|
|
24
|
+
* back to the provider's default name; an empty/absent map ⇒ all defaults.
|
|
25
|
+
*/
|
|
26
|
+
readonly variables?: Readonly<Record<string, string>>;
|
|
27
|
+
}
|
|
28
|
+
/** A provider-typed deployment sink (vercel, …) with its env→target mapping. */
|
|
29
|
+
export interface DeploymentDecl {
|
|
30
|
+
readonly provider: string;
|
|
31
|
+
/** deploy-environment name → provider infrastructure target. */
|
|
32
|
+
readonly targets: Readonly<Record<string, string>>;
|
|
33
|
+
}
|
|
34
|
+
/** A scoped bundle of project-owned variables. */
|
|
35
|
+
export interface VariableGroup {
|
|
36
|
+
readonly name: string;
|
|
37
|
+
/** Environments this group applies to; `undefined` ⇒ every environment. */
|
|
38
|
+
readonly environments?: readonly string[];
|
|
39
|
+
readonly variables: readonly VariableDecl[];
|
|
40
|
+
}
|
|
41
|
+
export interface ResolvedManifest {
|
|
42
|
+
readonly environments: readonly string[];
|
|
43
|
+
readonly deployments: readonly DeploymentDecl[];
|
|
44
|
+
readonly services: readonly ServiceDecl[];
|
|
45
|
+
/** Top-level (ungrouped) variables — apply to every environment. */
|
|
46
|
+
readonly variables: readonly VariableDecl[];
|
|
47
|
+
readonly variableGroups: readonly VariableGroup[];
|
|
48
|
+
/**
|
|
49
|
+
* Literal value overrides from per-environment overlay files:
|
|
50
|
+
* env name → { variable name → literal value }.
|
|
51
|
+
*/
|
|
52
|
+
readonly overlays: Readonly<Record<string, Readonly<Record<string, string>>>>;
|
|
53
|
+
}
|
|
54
|
+
export type Visibility = "public" | "secret";
|
|
55
|
+
/** A literal `value` is public; every other source is a secret. */
|
|
56
|
+
export declare function variableVisibility(source: VariableSource): Visibility;
|
|
57
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/manifest/types.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAElC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;CACjC;AAED,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,SAAS,cAAc,EAAE,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IAClD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/E;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7C,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAErE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// The resolved deployment-manifest model. A single `manifest.yml` declares
|
|
3
|
+
// STRUCTURE, SOURCES, and SCOPES env-agnostically; per-environment overlay
|
|
4
|
+
// files carry only literal value overrides. This is the typed foundation the
|
|
5
|
+
// config-manifest epic (#84) builds on — no command reads it yet.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.variableVisibility = variableVisibility;
|
|
8
|
+
/** A literal `value` is public; every other source is a secret. */
|
|
9
|
+
function variableVisibility(source) {
|
|
10
|
+
return source.kind === "value" ? "public" : "secret";
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/manifest/types.ts"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAC7E,kEAAkE;;AA6DlE,gDAEC;AAHD,mEAAmE;AACnE,SAAgB,kBAAkB,CAAC,MAAsB;IACvD,OAAO,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/lib/manifest/write.ts"],"names":[],"mappings":"AAsBA,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EAAE,GACrB,IAAI,CA4BN;AAQD,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,IAAI,CAsBN"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.setManifestEnvironments = setManifestEnvironments;
|
|
37
|
+
exports.setManifestTarget = setManifestTarget;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const yaml_1 = require("yaml");
|
|
40
|
+
const parse_1 = require("./parse");
|
|
41
|
+
function loadOrCreate(file) {
|
|
42
|
+
if (!fs.existsSync(file))
|
|
43
|
+
return new yaml_1.Document({});
|
|
44
|
+
const text = fs.readFileSync(file, "utf-8");
|
|
45
|
+
return text.trim() === "" ? new yaml_1.Document({}) : (0, yaml_1.parseDocument)(text);
|
|
46
|
+
}
|
|
47
|
+
// Update the `environments:` list in manifest.yml, preserving comments and key
|
|
48
|
+
// ordering in an existing file. Uses the `yaml` Document API — the comment-safe
|
|
49
|
+
// replacement for the legacy js-yaml load→mutate→dump writeActiveEnvs().
|
|
50
|
+
//
|
|
51
|
+
// The sequence is rebuilt in the requested order by REUSING each surviving
|
|
52
|
+
// entry's node rather than replacing the whole `environments` node — so an
|
|
53
|
+
// inline comment on an entry (`- production # primary`) travels with it (#104).
|
|
54
|
+
// New names get fresh nodes; dropped names fall away. When the file does not
|
|
55
|
+
// exist (or is blank), a new manifest carrying only the environments list is
|
|
56
|
+
// created.
|
|
57
|
+
function setManifestEnvironments(deploymentDir, environments) {
|
|
58
|
+
const file = (0, parse_1.manifestFilePath)(deploymentDir);
|
|
59
|
+
const doc = loadOrCreate(file);
|
|
60
|
+
// Index the surviving entries by scalar value so their nodes — and the inline
|
|
61
|
+
// comments attached to them — can be reused in the rebuilt sequence.
|
|
62
|
+
const current = doc.get("environments", true);
|
|
63
|
+
const reusable = new Map();
|
|
64
|
+
if ((0, yaml_1.isSeq)(current)) {
|
|
65
|
+
for (const item of current.items) {
|
|
66
|
+
const value = (0, yaml_1.isScalar)(item) ? item.value : item;
|
|
67
|
+
if (typeof value === "string" && !reusable.has(value))
|
|
68
|
+
reusable.set(value, item);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const seq = new yaml_1.YAMLSeq();
|
|
72
|
+
for (const env of environments) {
|
|
73
|
+
if (reusable.has(env)) {
|
|
74
|
+
seq.items.push(reusable.get(env));
|
|
75
|
+
reusable.delete(env); // never reuse the same node twice
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
seq.items.push(doc.createNode(env));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
doc.set("environments", seq);
|
|
82
|
+
fs.writeFileSync(file, doc.toString());
|
|
83
|
+
}
|
|
84
|
+
// Persist an environment's provider target into the manifest's authoritative
|
|
85
|
+
// `deployments[].targets` map (#87) — the write behind `env add --target`. The
|
|
86
|
+
// vercel deployment entry (and its `targets` map) is created if absent;
|
|
87
|
+
// otherwise the single target is upserted in place, preserving comments and
|
|
88
|
+
// every other key. Only the target is recorded here — the active-env list stays
|
|
89
|
+
// in environments.yml.
|
|
90
|
+
function setManifestTarget(deploymentDir, envName, target) {
|
|
91
|
+
const file = (0, parse_1.manifestFilePath)(deploymentDir);
|
|
92
|
+
const doc = loadOrCreate(file);
|
|
93
|
+
const deployments = doc.get("deployments", true);
|
|
94
|
+
const idx = (0, yaml_1.isSeq)(deployments)
|
|
95
|
+
? deployments.items.findIndex((item) => (0, yaml_1.isMap)(item) && item.get("provider") === "vercel")
|
|
96
|
+
: -1;
|
|
97
|
+
if (idx !== -1) {
|
|
98
|
+
doc.setIn(["deployments", idx, "targets", envName], target);
|
|
99
|
+
}
|
|
100
|
+
else if ((0, yaml_1.isSeq)(deployments)) {
|
|
101
|
+
deployments.add({ provider: "vercel", targets: { [envName]: target } });
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
doc.set("deployments", [
|
|
105
|
+
{ provider: "vercel", targets: { [envName]: target } },
|
|
106
|
+
]);
|
|
107
|
+
}
|
|
108
|
+
fs.writeFileSync(file, doc.toString());
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/lib/manifest/write.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,0DA+BC;AAQD,8CA0BC;AAvFD,uCAAyB;AAEzB,+BAAgF;AAEhF,mCAA2C;AAE3C,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,eAAQ,CAAC,EAAE,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,eAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,oBAAa,EAAC,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,yEAAyE;AACzE,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,gFAAgF;AAChF,6EAA6E;AAC7E,6EAA6E;AAC7E,WAAW;AACX,SAAgB,uBAAuB,CACrC,aAAqB,EACrB,YAAsB;IAEtB,MAAM,IAAI,GAAG,IAAA,wBAAgB,EAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAE/B,8EAA8E;IAC9E,qEAAqE;IACrE,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,IAAI,IAAA,YAAK,EAAC,OAAO,CAAC,EAAE,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,IAAA,eAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;gBACnD,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,cAAO,EAAE,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,kCAAkC;QAC1D,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAE7B,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,6EAA6E;AAC7E,+EAA+E;AAC/E,wEAAwE;AACxE,4EAA4E;AAC5E,gFAAgF;AAChF,uBAAuB;AACvB,SAAgB,iBAAiB,CAC/B,aAAqB,EACrB,OAAe,EACf,MAAc;IAEd,MAAM,IAAI,GAAG,IAAA,wBAAgB,EAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAE/B,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,IAAA,YAAK,EAAC,WAAW,CAAC;QAC5B,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CACzB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,YAAK,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,QAAQ,CAC3D;QACH,CAAC,CAAC,CAAC,CAAC,CAAC;IAEP,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,IAAA,YAAK,EAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE;YACrB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE;SACvD,CAAC,CAAC;IACL,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,aAAa,CAC3B,UAAU,GAAE,MAAsB,GACjC,aAAa,CAuBf"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.detectProject = detectProject;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const logger_1 = require("./logger");
|
|
40
|
+
function detectProject(workingDir = process.cwd()) {
|
|
41
|
+
const projectId = process.env.VERCEL_PROJECT_ID;
|
|
42
|
+
const teamId = process.env.VERCEL_TEAM_ID ?? undefined;
|
|
43
|
+
const projectJsonPath = path.join(workingDir, ".vercel", "project.json");
|
|
44
|
+
if (fs.existsSync(projectJsonPath)) {
|
|
45
|
+
const data = JSON.parse(fs.readFileSync(projectJsonPath, "utf-8"));
|
|
46
|
+
return {
|
|
47
|
+
projectId: projectId ?? data.projectId ?? "",
|
|
48
|
+
teamId: teamId ?? data.orgId ?? undefined,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (!projectId) {
|
|
52
|
+
return (0, logger_1.err)("Could not detect Vercel project ID. Set VERCEL_PROJECT_ID or run from a Vercel project directory.");
|
|
53
|
+
}
|
|
54
|
+
return { projectId, teamId };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/lib/project.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,sCAyBC;AAnCD,uCAAyB;AACzB,2CAA6B;AAE7B,qCAA+B;AAO/B,SAAgB,aAAa,CAC3B,aAAqB,OAAO,CAAC,GAAG,EAAE;IAElC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,SAAS,CAAC;IAEvD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACzE,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAGhE,CAAC;QACF,OAAO;YACL,SAAS,EAAE,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE;YAC5C,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS;SAC1C,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAA,YAAG,EACR,mGAAmG,CACpG,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type VercelEnvVar, type VercelEnvVarList } from "../vercel-api";
|
|
2
|
+
type EnvVarType = "plain" | "encrypted";
|
|
3
|
+
export interface DeploymentProvider {
|
|
4
|
+
readonly provider: string;
|
|
5
|
+
readonly projectId: string;
|
|
6
|
+
readonly teamId: string | undefined;
|
|
7
|
+
listEnvVars(): Promise<VercelEnvVarList>;
|
|
8
|
+
getEnvVarValue(id: string): Promise<string>;
|
|
9
|
+
findEnvVar(envs: VercelEnvVar[], key: string, target: string): VercelEnvVar | undefined;
|
|
10
|
+
createEnvVar(key: string, value: string, target: string, type?: EnvVarType): Promise<VercelEnvVar>;
|
|
11
|
+
updateEnvVar(existing: VercelEnvVar, value: string): Promise<void>;
|
|
12
|
+
setEnvForTarget(key: string, value: string, target: string, envs: VercelEnvVar[], type?: EnvVarType): Promise<string>;
|
|
13
|
+
removeEnvVarFromTarget(id: string, existingTargets: string[], vercelEnv: string): Promise<void>;
|
|
14
|
+
triggerAndWaitRedeployments(targetEnv: string): Promise<void>;
|
|
15
|
+
refreshPreviewDeployments(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export declare function createVercelDeploymentProvider(workingDir: string): DeploymentProvider;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=deployment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../../src/lib/providers/deployment.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAEvB,KAAK,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;AAOxC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,UAAU,CACR,IAAI,EAAE,YAAY,EAAE,EACpB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,YAAY,GAAG,SAAS,CAAC;IAC5B,YAAY,CACV,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,YAAY,CAAC,CAAC;IACzB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,eAAe,CACb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,EAAE,EACpB,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,sBAAsB,CACpB,EAAE,EAAE,MAAM,EACV,eAAe,EAAE,MAAM,EAAE,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AA4ED,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,GACjB,kBAAkB,CAEpB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createVercelDeploymentProvider = createVercelDeploymentProvider;
|
|
4
|
+
const auth_1 = require("../auth");
|
|
5
|
+
const deployments_1 = require("../deployments");
|
|
6
|
+
const logger_1 = require("../logger");
|
|
7
|
+
const project_1 = require("../project");
|
|
8
|
+
const vercel_api_1 = require("../vercel-api");
|
|
9
|
+
// The Vercel deployment provider — wraps VercelClient + deployments.ts, with
|
|
10
|
+
// identity resolved from VERCEL_* env vars / .vercel/project.json. Delegation
|
|
11
|
+
// keeps VercelClient's behavior (and its prototype, which the tests spy on)
|
|
12
|
+
// unchanged.
|
|
13
|
+
class VercelDeploymentProvider {
|
|
14
|
+
provider = "vercel";
|
|
15
|
+
projectId;
|
|
16
|
+
teamId;
|
|
17
|
+
client;
|
|
18
|
+
constructor(workingDir) {
|
|
19
|
+
const token = (0, auth_1.resolveVercelToken)();
|
|
20
|
+
if (!token)
|
|
21
|
+
throw new logger_1.FatalError("No Vercel token found. Set VERCEL_TOKEN or run 'vercel login' to authenticate.");
|
|
22
|
+
const project = (0, project_1.detectProject)(workingDir);
|
|
23
|
+
this.projectId = project.projectId;
|
|
24
|
+
this.teamId = project.teamId;
|
|
25
|
+
this.client = new vercel_api_1.VercelClient(token, project.projectId, project.teamId);
|
|
26
|
+
}
|
|
27
|
+
listEnvVars() {
|
|
28
|
+
return this.client.listEnvVars();
|
|
29
|
+
}
|
|
30
|
+
getEnvVarValue(id) {
|
|
31
|
+
return this.client.getEnvVarValue(id);
|
|
32
|
+
}
|
|
33
|
+
findEnvVar(envs, key, target) {
|
|
34
|
+
return this.client.findEnvVar(envs, key, target);
|
|
35
|
+
}
|
|
36
|
+
createEnvVar(key, value, target, type = "plain") {
|
|
37
|
+
return this.client.createEnvVar(key, value, target, type);
|
|
38
|
+
}
|
|
39
|
+
updateEnvVar(existing, value) {
|
|
40
|
+
return this.client.updateEnvVar(existing, value);
|
|
41
|
+
}
|
|
42
|
+
setEnvForTarget(key, value, target, envs, type) {
|
|
43
|
+
// Forward `type` only when the caller set it, so the underlying client's
|
|
44
|
+
// own default applies and the delegated call keeps its original arity.
|
|
45
|
+
return type === undefined
|
|
46
|
+
? this.client.setEnvForTarget(key, value, target, envs)
|
|
47
|
+
: this.client.setEnvForTarget(key, value, target, envs, type);
|
|
48
|
+
}
|
|
49
|
+
removeEnvVarFromTarget(id, existingTargets, vercelEnv) {
|
|
50
|
+
return this.client.removeEnvVarFromTarget(id, existingTargets, vercelEnv);
|
|
51
|
+
}
|
|
52
|
+
triggerAndWaitRedeployments(targetEnv) {
|
|
53
|
+
return (0, deployments_1.triggerAndWaitRedeployments)(targetEnv, this.client);
|
|
54
|
+
}
|
|
55
|
+
refreshPreviewDeployments() {
|
|
56
|
+
return (0, deployments_1.refreshPreviewDeployments)(this.client);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function createVercelDeploymentProvider(workingDir) {
|
|
60
|
+
return new VercelDeploymentProvider(workingDir);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=deployment.js.map
|