@sentroy-co/client-sdk 2.8.0 → 2.12.0
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/AGENTS.md +97 -0
- package/README.md +34 -1
- package/bin/sentroy.js +4 -0
- package/dist/cli/dotenv.d.ts +35 -0
- package/dist/cli/dotenv.d.ts.map +1 -0
- package/dist/cli/dotenv.js +125 -0
- package/dist/cli/dotenv.js.map +1 -0
- package/dist/cli/env.d.ts +11 -0
- package/dist/cli/env.d.ts.map +1 -0
- package/dist/cli/env.js +331 -0
- package/dist/cli/env.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +105 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/vault/index.d.ts +60 -0
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +116 -0
- package/dist/vault/index.js.map +1 -1
- package/package.json +9 -3
- package/src/cli/dotenv.ts +146 -0
- package/src/cli/env.ts +402 -0
- package/src/cli/index.ts +122 -0
- package/src/vault/index.ts +160 -0
package/dist/cli/env.js
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `sentroy env <subcommand>` — vault sync from a local .env file.
|
|
4
|
+
*
|
|
5
|
+
* The token's (project, environment) scope is implicit; the CLI never
|
|
6
|
+
* asks for either since it can't change them.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.cmdPush = cmdPush;
|
|
43
|
+
exports.cmdPull = cmdPull;
|
|
44
|
+
exports.cmdList = cmdList;
|
|
45
|
+
exports.cmdDiff = cmdDiff;
|
|
46
|
+
const fs = __importStar(require("fs"));
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
const readline = __importStar(require("readline"));
|
|
49
|
+
const dotenv_1 = require("./dotenv");
|
|
50
|
+
const DEFAULT_FILE = ".env";
|
|
51
|
+
const DEFAULT_BASE_URL = "https://sentroy.com";
|
|
52
|
+
// ── ANSI helpers (no deps) ───────────────────────────────────────────────
|
|
53
|
+
const supportsColor = process.stdout.isTTY && process.env.TERM !== "dumb";
|
|
54
|
+
const c = {
|
|
55
|
+
bold: (s) => (supportsColor ? `\x1b[1m${s}\x1b[0m` : s),
|
|
56
|
+
dim: (s) => (supportsColor ? `\x1b[2m${s}\x1b[0m` : s),
|
|
57
|
+
red: (s) => (supportsColor ? `\x1b[31m${s}\x1b[0m` : s),
|
|
58
|
+
green: (s) => (supportsColor ? `\x1b[32m${s}\x1b[0m` : s),
|
|
59
|
+
yellow: (s) => (supportsColor ? `\x1b[33m${s}\x1b[0m` : s),
|
|
60
|
+
cyan: (s) => (supportsColor ? `\x1b[36m${s}\x1b[0m` : s),
|
|
61
|
+
magenta: (s) => (supportsColor ? `\x1b[35m${s}\x1b[0m` : s),
|
|
62
|
+
};
|
|
63
|
+
function fail(msg) {
|
|
64
|
+
process.stderr.write(`${c.red("✗")} ${msg}\n`);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
function info(msg) {
|
|
68
|
+
process.stdout.write(`${c.cyan("→")} ${msg}\n`);
|
|
69
|
+
}
|
|
70
|
+
function ok(msg) {
|
|
71
|
+
process.stdout.write(`${c.green("✓")} ${msg}\n`);
|
|
72
|
+
}
|
|
73
|
+
function warn(msg) {
|
|
74
|
+
process.stdout.write(`${c.yellow("⚠")} ${msg}\n`);
|
|
75
|
+
}
|
|
76
|
+
function resolveSharedOpts(rest) {
|
|
77
|
+
const token = (typeof rest.token === "string" ? rest.token : null) ??
|
|
78
|
+
process.env.SENTROY_ENV_API_KEY ??
|
|
79
|
+
null;
|
|
80
|
+
if (!token) {
|
|
81
|
+
fail("no token. Pass --token=stk_env_... or set SENTROY_ENV_API_KEY in your environment.");
|
|
82
|
+
}
|
|
83
|
+
const baseUrl = (typeof rest.url === "string" ? rest.url : null) ??
|
|
84
|
+
process.env.SENTROY_ENV_API_URL ??
|
|
85
|
+
DEFAULT_BASE_URL;
|
|
86
|
+
return { token, baseUrl: baseUrl.replace(/\/+$/, "") };
|
|
87
|
+
}
|
|
88
|
+
async function http(shared, path, init) {
|
|
89
|
+
const res = await fetch(`${shared.baseUrl}${path}`, {
|
|
90
|
+
...init,
|
|
91
|
+
headers: {
|
|
92
|
+
Authorization: `Bearer ${shared.token}`,
|
|
93
|
+
...(init?.body ? { "Content-Type": "application/json" } : {}),
|
|
94
|
+
...(init?.headers ?? {}),
|
|
95
|
+
},
|
|
96
|
+
});
|
|
97
|
+
const text = await res.text();
|
|
98
|
+
let body;
|
|
99
|
+
try {
|
|
100
|
+
body = text ? JSON.parse(text) : null;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
body = text;
|
|
104
|
+
}
|
|
105
|
+
if (!res.ok) {
|
|
106
|
+
const errMsg = body && typeof body === "object" && "error" in body
|
|
107
|
+
? String(body.error)
|
|
108
|
+
: `HTTP ${res.status}`;
|
|
109
|
+
throw new Error(`${path}: ${errMsg}`);
|
|
110
|
+
}
|
|
111
|
+
return body?.data;
|
|
112
|
+
}
|
|
113
|
+
function readFileOrFail(file) {
|
|
114
|
+
if (!fs.existsSync(file)) {
|
|
115
|
+
fail(`file not found: ${file}`);
|
|
116
|
+
}
|
|
117
|
+
return fs.readFileSync(file, "utf8");
|
|
118
|
+
}
|
|
119
|
+
function computeDiff(local, remote) {
|
|
120
|
+
const remoteByKey = new Map(remote.map((v) => [v.key, v]));
|
|
121
|
+
const added = [];
|
|
122
|
+
const updated = [];
|
|
123
|
+
const unchanged = [];
|
|
124
|
+
for (const e of local) {
|
|
125
|
+
const r = remoteByKey.get(e.key);
|
|
126
|
+
if (!r) {
|
|
127
|
+
added.push(e);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (r.value !== e.value || r.public !== e.public) {
|
|
131
|
+
updated.push({ entry: e, remote: r });
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
unchanged.push({ entry: e, remote: r });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const localKeys = new Set(local.map((e) => e.key));
|
|
138
|
+
const deleted = remote.filter((v) => !localKeys.has(v.key));
|
|
139
|
+
return { added, updated, unchanged, deleted };
|
|
140
|
+
}
|
|
141
|
+
function printDiff(diff, deleteMissing) {
|
|
142
|
+
for (const e of diff.added) {
|
|
143
|
+
process.stdout.write(` ${c.green("+")} ${e.key}\n`);
|
|
144
|
+
}
|
|
145
|
+
for (const u of diff.updated) {
|
|
146
|
+
process.stdout.write(` ${c.yellow("~")} ${u.entry.key}\n`);
|
|
147
|
+
}
|
|
148
|
+
if (deleteMissing) {
|
|
149
|
+
for (const d of diff.deleted) {
|
|
150
|
+
process.stdout.write(` ${c.red("-")} ${d.key}\n`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else if (diff.deleted.length > 0) {
|
|
154
|
+
process.stdout.write(` ${c.dim(`(${diff.deleted.length} key(s) only in vault, kept — pass --delete-missing to remove)`)}\n`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async function confirm(question) {
|
|
158
|
+
if (!process.stdin.isTTY)
|
|
159
|
+
return false;
|
|
160
|
+
const rl = readline.createInterface({
|
|
161
|
+
input: process.stdin,
|
|
162
|
+
output: process.stdout,
|
|
163
|
+
});
|
|
164
|
+
const answer = await new Promise((resolve) => {
|
|
165
|
+
rl.question(`${question} [y/N] `, (ans) => {
|
|
166
|
+
rl.close();
|
|
167
|
+
resolve(ans.trim().toLowerCase());
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
return answer === "y" || answer === "yes";
|
|
171
|
+
}
|
|
172
|
+
// ── push ─────────────────────────────────────────────────────────────────
|
|
173
|
+
async function cmdPush(args) {
|
|
174
|
+
const { positional, flags } = parseFlags(args);
|
|
175
|
+
const file = positional[0] ?? DEFAULT_FILE;
|
|
176
|
+
const dryRun = !!flags["dry-run"];
|
|
177
|
+
const deleteMissing = !!flags["delete-missing"];
|
|
178
|
+
const shared = resolveSharedOpts(flags);
|
|
179
|
+
const text = readFileOrFail(path.resolve(process.cwd(), file));
|
|
180
|
+
const parsed = (0, dotenv_1.parseDotenv)(text);
|
|
181
|
+
if (parsed.errors.length > 0) {
|
|
182
|
+
process.stderr.write(`${c.red("✗")} parse errors in ${file}:\n`);
|
|
183
|
+
for (const err of parsed.errors) {
|
|
184
|
+
process.stderr.write(` line ${err.line}: ${err.message}\n`);
|
|
185
|
+
}
|
|
186
|
+
process.exit(1);
|
|
187
|
+
}
|
|
188
|
+
info(`fetching current vault snapshot…`);
|
|
189
|
+
const remote = await http(shared, "/api/env-vault/fetch");
|
|
190
|
+
const diff = computeDiff(parsed.entries, remote.variables);
|
|
191
|
+
process.stdout.write(`\n${c.bold(remote.project)} ${c.dim("/")} ${c.magenta(remote.environment)} ${c.dim(`(${file} → ${shared.baseUrl})`)}\n`);
|
|
192
|
+
printDiff(diff, deleteMissing);
|
|
193
|
+
process.stdout.write(`\n ${c.dim("summary:")} ${diff.added.length} new · ${diff.updated.length} updated · ${diff.unchanged.length} unchanged${deleteMissing ? ` · ${diff.deleted.length} to delete` : ""}\n\n`);
|
|
194
|
+
if (diff.added.length === 0 &&
|
|
195
|
+
diff.updated.length === 0 &&
|
|
196
|
+
(!deleteMissing || diff.deleted.length === 0)) {
|
|
197
|
+
ok("nothing to push.");
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
if (dryRun) {
|
|
201
|
+
info("dry run — no changes pushed.");
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
if (deleteMissing && diff.deleted.length > 0) {
|
|
205
|
+
if (flags.yes) {
|
|
206
|
+
info(`--yes provided, skipping confirmation for ${diff.deleted.length} delete(s).`);
|
|
207
|
+
}
|
|
208
|
+
else if (!process.stdin.isTTY) {
|
|
209
|
+
fail(`refusing to delete ${diff.deleted.length} key(s) without --yes in a non-interactive shell.`);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
const proceed = await confirm(`${c.yellow("⚠")} this will delete ${diff.deleted.length} key(s) from the vault. continue?`);
|
|
213
|
+
if (!proceed) {
|
|
214
|
+
warn("aborted.");
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
const result = await http(shared, "/api/env-vault/push", {
|
|
220
|
+
method: "POST",
|
|
221
|
+
body: JSON.stringify({
|
|
222
|
+
entries: parsed.entries.map((e) => ({
|
|
223
|
+
key: e.key,
|
|
224
|
+
value: e.value,
|
|
225
|
+
public: e.public,
|
|
226
|
+
description: e.description,
|
|
227
|
+
})),
|
|
228
|
+
deleteMissing,
|
|
229
|
+
}),
|
|
230
|
+
});
|
|
231
|
+
ok(`${result.added} added · ${result.updated} updated · ${result.unchanged} unchanged · ${result.deleted} deleted`);
|
|
232
|
+
}
|
|
233
|
+
// ── pull ─────────────────────────────────────────────────────────────────
|
|
234
|
+
async function cmdPull(args) {
|
|
235
|
+
const { positional, flags } = parseFlags(args);
|
|
236
|
+
const file = positional[0] ?? DEFAULT_FILE;
|
|
237
|
+
const force = !!flags.force;
|
|
238
|
+
const shared = resolveSharedOpts(flags);
|
|
239
|
+
const target = path.resolve(process.cwd(), file);
|
|
240
|
+
if (fs.existsSync(target) && !force) {
|
|
241
|
+
fail(`${file} already exists. Pass --force to overwrite.`);
|
|
242
|
+
}
|
|
243
|
+
info(`fetching from ${shared.baseUrl}…`);
|
|
244
|
+
const remote = await http(shared, "/api/env-vault/fetch");
|
|
245
|
+
const entries = remote.variables.map((v) => ({
|
|
246
|
+
key: v.key,
|
|
247
|
+
value: v.value,
|
|
248
|
+
public: v.public,
|
|
249
|
+
description: null,
|
|
250
|
+
}));
|
|
251
|
+
const text = (0, dotenv_1.serializeDotenv)(entries);
|
|
252
|
+
fs.writeFileSync(target, text, "utf8");
|
|
253
|
+
ok(`wrote ${entries.length} variable(s) to ${file} (${remote.project}/${remote.environment})`);
|
|
254
|
+
}
|
|
255
|
+
// ── list ─────────────────────────────────────────────────────────────────
|
|
256
|
+
async function cmdList(args) {
|
|
257
|
+
const { flags } = parseFlags(args);
|
|
258
|
+
const showValues = !!flags.values;
|
|
259
|
+
const publicOnly = !!flags["public-only"];
|
|
260
|
+
const shared = resolveSharedOpts(flags);
|
|
261
|
+
const endpoint = publicOnly ? "/api/env-vault/public" : "/api/env-vault/fetch";
|
|
262
|
+
const remote = await http(shared, endpoint);
|
|
263
|
+
process.stdout.write(`${c.bold(remote.project)} ${c.dim("/")} ${c.magenta(remote.environment)} ${c.dim(`(${remote.variables.length} variable(s))`)}\n`);
|
|
264
|
+
for (const v of remote.variables) {
|
|
265
|
+
const tag = v.public ? c.dim(" [public]") : "";
|
|
266
|
+
if (showValues) {
|
|
267
|
+
process.stdout.write(` ${c.cyan(v.key)}=${v.value}${tag}\n`);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
process.stdout.write(` ${c.cyan(v.key)}${tag}\n`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
// ── diff ─────────────────────────────────────────────────────────────────
|
|
275
|
+
async function cmdDiff(args) {
|
|
276
|
+
const { positional, flags } = parseFlags(args);
|
|
277
|
+
const file = positional[0] ?? DEFAULT_FILE;
|
|
278
|
+
const deleteMissing = !!flags["delete-missing"];
|
|
279
|
+
const shared = resolveSharedOpts(flags);
|
|
280
|
+
const text = readFileOrFail(path.resolve(process.cwd(), file));
|
|
281
|
+
const parsed = (0, dotenv_1.parseDotenv)(text);
|
|
282
|
+
if (parsed.errors.length > 0) {
|
|
283
|
+
process.stderr.write(`${c.red("✗")} parse errors in ${file}:\n`);
|
|
284
|
+
for (const err of parsed.errors) {
|
|
285
|
+
process.stderr.write(` line ${err.line}: ${err.message}\n`);
|
|
286
|
+
}
|
|
287
|
+
process.exit(1);
|
|
288
|
+
}
|
|
289
|
+
const remote = await http(shared, "/api/env-vault/fetch");
|
|
290
|
+
const diff = computeDiff(parsed.entries, remote.variables);
|
|
291
|
+
process.stdout.write(`${c.bold(remote.project)} ${c.dim("/")} ${c.magenta(remote.environment)} ${c.dim(`(${file} vs vault)`)}\n`);
|
|
292
|
+
printDiff(diff, deleteMissing);
|
|
293
|
+
process.stdout.write(`\n ${c.dim("summary:")} ${diff.added.length} new · ${diff.updated.length} updated · ${diff.unchanged.length} unchanged · ${diff.deleted.length} only in vault\n`);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Flags that take a value as a separate token (`--flag value`). All other
|
|
297
|
+
* `--flag` tokens are booleans. The `--flag=value` form always works
|
|
298
|
+
* regardless of this list. Keeping this explicit avoids the classic argv
|
|
299
|
+
* bug where `--dry-run /path/to/file` swallows the positional.
|
|
300
|
+
*/
|
|
301
|
+
const VALUE_FLAGS = new Set(["token", "url"]);
|
|
302
|
+
function parseFlags(args) {
|
|
303
|
+
const positional = [];
|
|
304
|
+
const flags = {};
|
|
305
|
+
for (let i = 0; i < args.length; i++) {
|
|
306
|
+
const a = args[i];
|
|
307
|
+
if (!a.startsWith("--")) {
|
|
308
|
+
positional.push(a);
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
const body = a.slice(2);
|
|
312
|
+
const eq = body.indexOf("=");
|
|
313
|
+
if (eq >= 0) {
|
|
314
|
+
flags[body.slice(0, eq)] = body.slice(eq + 1);
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
if (VALUE_FLAGS.has(body)) {
|
|
318
|
+
const next = args[i + 1];
|
|
319
|
+
if (next === undefined || next.startsWith("--")) {
|
|
320
|
+
fail(`flag --${body} requires a value (use --${body}=value or --${body} value)`);
|
|
321
|
+
}
|
|
322
|
+
flags[body] = next;
|
|
323
|
+
i++;
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
flags[body] = true;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
return { positional, flags };
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/cli/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `sentroy` — CLI entry point.
|
|
4
|
+
*
|
|
5
|
+
* Subcommand router with no third-party deps. Today only `env` exists;
|
|
6
|
+
* future subcommands (`mail`, `media`, etc.) hook in here.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const env_1 = require("./env");
|
|
10
|
+
const VERSION = "__VERSION__"; // replaced at runtime via package.json read
|
|
11
|
+
const ENV_SUBCOMMANDS = {
|
|
12
|
+
push: {
|
|
13
|
+
description: "Push a local .env file to the vault (full sync if --delete-missing)",
|
|
14
|
+
handler: env_1.cmdPush,
|
|
15
|
+
},
|
|
16
|
+
pull: {
|
|
17
|
+
description: "Fetch the vault scope and write to a local .env file",
|
|
18
|
+
handler: env_1.cmdPull,
|
|
19
|
+
},
|
|
20
|
+
list: {
|
|
21
|
+
description: "Print every key in the vault scope (--values to include values, --public-only)",
|
|
22
|
+
handler: env_1.cmdList,
|
|
23
|
+
},
|
|
24
|
+
diff: {
|
|
25
|
+
description: "Show what would change if you pushed the local .env file",
|
|
26
|
+
handler: env_1.cmdDiff,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
function readPackageVersion() {
|
|
30
|
+
if (VERSION !== "__VERSION__")
|
|
31
|
+
return VERSION;
|
|
32
|
+
// Walk up from this file: dist/cli/index.js → dist/cli → dist → package.
|
|
33
|
+
try {
|
|
34
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
35
|
+
const { version } = require("../../package.json");
|
|
36
|
+
return version;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return "unknown";
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function showHelp() {
|
|
43
|
+
const v = readPackageVersion();
|
|
44
|
+
process.stdout.write(`\nsentroy ${v} — Sentroy CLI\n\n` +
|
|
45
|
+
`USAGE\n` +
|
|
46
|
+
` sentroy <command> [args] [flags]\n\n` +
|
|
47
|
+
`COMMANDS\n` +
|
|
48
|
+
` env push [<file>] ${ENV_SUBCOMMANDS.push.description}\n` +
|
|
49
|
+
` env pull [<file>] ${ENV_SUBCOMMANDS.pull.description}\n` +
|
|
50
|
+
` env list ${ENV_SUBCOMMANDS.list.description}\n` +
|
|
51
|
+
` env diff [<file>] ${ENV_SUBCOMMANDS.diff.description}\n\n` +
|
|
52
|
+
`GLOBAL FLAGS\n` +
|
|
53
|
+
` --token=stk_env_... Vault token (default: $SENTROY_ENV_API_KEY)\n` +
|
|
54
|
+
` --url=https://... Sentroy core URL (default: $SENTROY_ENV_API_URL or https://sentroy.com)\n\n` +
|
|
55
|
+
`ENV PUSH FLAGS\n` +
|
|
56
|
+
` --delete-missing Remove vault keys not present in the local file (full sync)\n` +
|
|
57
|
+
` --dry-run Print the diff but do not write\n` +
|
|
58
|
+
` --yes Skip the delete-confirmation prompt (CI-friendly)\n\n` +
|
|
59
|
+
`ENV PULL FLAGS\n` +
|
|
60
|
+
` --force Overwrite the file if it already exists\n\n` +
|
|
61
|
+
`ENV LIST FLAGS\n` +
|
|
62
|
+
` --values Include values (default: keys only)\n` +
|
|
63
|
+
` --public-only Only variables marked public\n\n` +
|
|
64
|
+
`EXAMPLES\n` +
|
|
65
|
+
` sentroy env push .env.production --delete-missing\n` +
|
|
66
|
+
` sentroy env pull .env --force\n` +
|
|
67
|
+
` sentroy env diff .env.production --delete-missing\n` +
|
|
68
|
+
` sentroy env list --values --public-only\n\n` +
|
|
69
|
+
`Token scope (project + environment) is implicit — generate one in the\n` +
|
|
70
|
+
`Sentroy vault dashboard.\n\n`);
|
|
71
|
+
}
|
|
72
|
+
async function main() {
|
|
73
|
+
const argv = process.argv.slice(2);
|
|
74
|
+
if (argv.length === 0 ||
|
|
75
|
+
argv[0] === "-h" ||
|
|
76
|
+
argv[0] === "--help" ||
|
|
77
|
+
argv[0] === "help") {
|
|
78
|
+
showHelp();
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (argv[0] === "-v" || argv[0] === "--version") {
|
|
82
|
+
process.stdout.write(`${readPackageVersion()}\n`);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const cmd = argv[0];
|
|
86
|
+
if (cmd === "env") {
|
|
87
|
+
const sub = argv[1];
|
|
88
|
+
const handler = sub ? ENV_SUBCOMMANDS[sub] : undefined;
|
|
89
|
+
if (!handler) {
|
|
90
|
+
process.stderr.write(`unknown env subcommand: ${sub ?? "<missing>"}\n` +
|
|
91
|
+
`available: ${Object.keys(ENV_SUBCOMMANDS).join(", ")}\n`);
|
|
92
|
+
process.exit(1);
|
|
93
|
+
}
|
|
94
|
+
await handler.handler(argv.slice(2));
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
process.stderr.write(`unknown command: ${cmd}\nrun \`sentroy --help\` for usage.\n`);
|
|
98
|
+
process.exit(1);
|
|
99
|
+
}
|
|
100
|
+
main().catch((err) => {
|
|
101
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
102
|
+
process.stderr.write(`\n\x1b[31m✗\x1b[0m ${msg}\n`);
|
|
103
|
+
process.exit(1);
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/vault/index.d.ts
CHANGED
|
@@ -65,9 +65,69 @@ export declare function preloadEnv(): Promise<void>;
|
|
|
65
65
|
export declare function getEnv(key: string): Promise<string | undefined>;
|
|
66
66
|
/** Eksik env'i hemen patlatır — config-validation pattern'inde kullanışlı. */
|
|
67
67
|
export declare function getEnvOrThrow(key: string): Promise<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Migration helper — vault'tan oku, yoksa `process.env` fallback.
|
|
70
|
+
*
|
|
71
|
+
* Sentroy app'lerini kademeli olarak `process.env` → vault'a çevirirken
|
|
72
|
+
* "her ikisi de çalışsın" senaryosu için. Vault doldurulmamış / token
|
|
73
|
+
* eksik / fetch fail dönerse sessizce `process.env[key]`'e döner — eski
|
|
74
|
+
* deploy ile yeni kod bir arada çalışabilir.
|
|
75
|
+
*
|
|
76
|
+
* **Migration tamamlandıktan sonra** çağrı sitelerini `getEnv()` ya da
|
|
77
|
+
* `getEnvOrThrow()`'a çevir; fallback'i bırakmak silently process.env
|
|
78
|
+
* sızıntısı riskini taşır (kullanıcı vault'tan key'i sildi sansa bile
|
|
79
|
+
* eski process.env değeri etkili olur).
|
|
80
|
+
*
|
|
81
|
+
* Bootstrap path için (`SENTROY_ENV_API_KEY` set değil) doğrudan
|
|
82
|
+
* `process.env`'e döner — vault fetch denemez. Bu önemli: Sentroy app'i
|
|
83
|
+
* vault'sız boot edilebilir.
|
|
84
|
+
*/
|
|
85
|
+
export declare function getEnvWithFallback(key: string): Promise<string | undefined>;
|
|
68
86
|
/** Tüm env'leri map olarak döner (dump için kullanışlı). */
|
|
69
87
|
export declare function getAllEnvs(): Promise<Record<string, string>>;
|
|
70
88
|
/** Sadece public (`public: true`) env'ler — SSR helper için. */
|
|
71
89
|
export declare function getPublicEnvs(): Promise<Record<string, string>>;
|
|
90
|
+
export interface VaultWebhookPayload {
|
|
91
|
+
event: "vault.variable.changed";
|
|
92
|
+
project: string;
|
|
93
|
+
environment: string;
|
|
94
|
+
action: "create" | "update" | "delete";
|
|
95
|
+
/** Etkilenen key'ler — bulk push'ta birden fazla. */
|
|
96
|
+
keys: string[];
|
|
97
|
+
/** Unix ms. */
|
|
98
|
+
timestamp: number;
|
|
99
|
+
}
|
|
100
|
+
export interface CreateVaultWebhookHandlerOptions {
|
|
101
|
+
/**
|
|
102
|
+
* Sentroy vault dashboard'dan aldığın webhook secret (`whsec_...`).
|
|
103
|
+
* Receiver bu secret'la HMAC-SHA256 imzayı doğrular; hatalıysa 401 döner.
|
|
104
|
+
*/
|
|
105
|
+
secret: string;
|
|
106
|
+
/**
|
|
107
|
+
* Imzayı doğruladıktan sonra çağrılır. Default davranış:
|
|
108
|
+
* `await refreshEnvCache()` — bir sonraki getEnv() taze değerleri çeker.
|
|
109
|
+
* Custom logic için override et (örn. tek bir key'i targeted invalidate).
|
|
110
|
+
*/
|
|
111
|
+
onChange?: (payload: VaultWebhookPayload) => Promise<void> | void;
|
|
112
|
+
/**
|
|
113
|
+
* Replay attack'lere karşı body'nin timestamp'i ile şu an arasındaki
|
|
114
|
+
* maksimum tolerans (ms). Default 5 dk. Sıfır ise check kapalı.
|
|
115
|
+
*/
|
|
116
|
+
maxAgeMs?: number;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Bir Sentroy vault webhook receiver'ı için Request → Response handler
|
|
120
|
+
* üretir. Next.js App Router'da:
|
|
121
|
+
*
|
|
122
|
+
* // app/api/sentroy/vault-webhook/route.ts
|
|
123
|
+
* import { createVaultWebhookHandler } from "@sentroy-co/client-sdk/vault"
|
|
124
|
+
* export const POST = createVaultWebhookHandler({
|
|
125
|
+
* secret: process.env.SENTROY_VAULT_WEBHOOK_SECRET!,
|
|
126
|
+
* })
|
|
127
|
+
*
|
|
128
|
+
* Default davranış: imza doğruysa cache'i invalidate eder ve 200 döner.
|
|
129
|
+
* Hatalı/eksik imza → 401, eski timestamp → 401, body parse hatası → 400.
|
|
130
|
+
*/
|
|
131
|
+
export declare function createVaultWebhookHandler(options: CreateVaultWebhookHandlerOptions): (request: Request) => Promise<Response>;
|
|
72
132
|
export {};
|
|
73
133
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vault/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AAKD,UAAU,aAAa;IACrB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAcD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,aAAkB,GAAG,IAAI,CAYpE;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,8EAA8E;AAC9E,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAGrD;AAED,2EAA2E;AAC3E,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAEhD;AA6DD;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAGrE;AAED,8EAA8E;AAC9E,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhE;AAED,4DAA4D;AAC5D,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAKlE;AAED,gEAAgE;AAChE,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAOrE"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vault/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AAKD,UAAU,aAAa;IACrB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAcD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,aAAkB,GAAG,IAAI,CAYpE;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,8EAA8E;AAC9E,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAGrD;AAED,2EAA2E;AAC3E,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAEhD;AA6DD;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAGrE;AAED,8EAA8E;AAC9E,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B;AAED,4DAA4D;AAC5D,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAKlE;AAED,gEAAgE;AAChE,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAOrE;AAID,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,wBAAwB,CAAA;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACtC,qDAAqD;IACrD,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,eAAe;IACf,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gCAAgC;IAC/C;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACjE;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AA8BD;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAmDzC"}
|