@secretstore/cli 0.7.2 → 0.8.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/dist/secretstore.js +14 -12
- package/package.json +6 -6
package/dist/secretstore.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// secretstore 0.
|
|
2
|
+
// secretstore 0.8.0: readable bundle of apps/cli for Node.js 20+. Source: https://github.com/CodingDiego/secret-store (apps/cli/src). AGPL-3.0-only.
|
|
3
3
|
// apps/cli/src/runtime.ts
|
|
4
4
|
import { spawn as nodeSpawn } from "node:child_process";
|
|
5
5
|
import { createHash } from "node:crypto";
|
|
@@ -344,7 +344,7 @@ async function readTarget(ctx, args, need) {
|
|
|
344
344
|
let production = true;
|
|
345
345
|
try {
|
|
346
346
|
const { environments } = firstJson(await ctx.client.call(TOOLS.listEnvironments, { project: target.project }));
|
|
347
|
-
production = environments.some((e) => e.kind === "production" && (e.slug === target.environment || e.id === target.environment));
|
|
347
|
+
production = environments.some((e) => e.kind === "production" && (e.slug === target.environment || e.id?.toLowerCase() === target.environment.toLowerCase()));
|
|
348
348
|
} catch {}
|
|
349
349
|
if (production)
|
|
350
350
|
confirmPinned(ctx, target.source, `${target.project}/${target.environment}`, "Read");
|
|
@@ -353,7 +353,7 @@ async function readTarget(ctx, args, need) {
|
|
|
353
353
|
// apps/cli/package.json
|
|
354
354
|
var package_default = {
|
|
355
355
|
name: "cli",
|
|
356
|
-
version: "0.
|
|
356
|
+
version: "0.8.0",
|
|
357
357
|
private: true,
|
|
358
358
|
license: "AGPL-3.0-only",
|
|
359
359
|
type: "module",
|
|
@@ -367,9 +367,9 @@ var package_default = {
|
|
|
367
367
|
devDependencies: {
|
|
368
368
|
"@secret-store/auth": "*",
|
|
369
369
|
"@secret-store/typescript-config": "*",
|
|
370
|
-
"@types/bun": "^1.4.
|
|
371
|
-
oxlint: "^1.
|
|
372
|
-
"oxlint-tsgolint": "^7.0.
|
|
370
|
+
"@types/bun": "^1.4.4",
|
|
371
|
+
oxlint: "^1.89.0",
|
|
372
|
+
"oxlint-tsgolint": "^7.0.2005",
|
|
373
373
|
typescript: "^7.0.2"
|
|
374
374
|
}
|
|
375
375
|
};
|
|
@@ -1123,12 +1123,13 @@ var doctor = async ({ io, flags, client }) => {
|
|
|
1123
1123
|
results.push({ check: name, status: "fail", detail: error instanceof Error ? error.message : String(error), ...hint ? { hint } : {} });
|
|
1124
1124
|
}
|
|
1125
1125
|
};
|
|
1126
|
-
const seen = { serverDate: null, reachable: false, credential: false };
|
|
1126
|
+
const seen = { serverDate: null, serverAgeMs: 0, reachable: false, credential: false };
|
|
1127
1127
|
await check("version", "", async () => ["ok", package_default.version]);
|
|
1128
1128
|
await check("server", "Check the address (--url or SECRET_STORE_URL) and your network.", async () => {
|
|
1129
1129
|
const meta = await discover(origin, async (url, init) => {
|
|
1130
1130
|
const response = await fetch(url, init);
|
|
1131
1131
|
seen.serverDate = response.headers.get("date");
|
|
1132
|
+
seen.serverAgeMs = (Number(response.headers.get("age")) || 0) * 1000;
|
|
1132
1133
|
return response;
|
|
1133
1134
|
});
|
|
1134
1135
|
seen.reachable = true;
|
|
@@ -1171,7 +1172,7 @@ var doctor = async ({ io, flags, client }) => {
|
|
|
1171
1172
|
const server = Date.parse(seen.serverDate ?? "");
|
|
1172
1173
|
if (Number.isNaN(server))
|
|
1173
1174
|
return ["warn", `not checked: ${seen.reachable ? "the server's answer had no Date header" : "the server was not reached"}`];
|
|
1174
|
-
const skew = io.now() - server;
|
|
1175
|
+
const skew = io.now() - (server + seen.serverAgeMs);
|
|
1175
1176
|
const detail = `${Math.round(skew / 1000)} s from the server`;
|
|
1176
1177
|
return Math.abs(skew) > SKEW_WARN_MS ? ["warn", detail, "DPoP proofs need a clock within about 30 s of the server's: sync your system clock."] : ["ok", detail];
|
|
1177
1178
|
});
|
|
@@ -1207,9 +1208,10 @@ function entries(env) {
|
|
|
1207
1208
|
var lines = (rows) => rows.length ? rows.join(`
|
|
1208
1209
|
`) + `
|
|
1209
1210
|
` : "";
|
|
1211
|
+
var dotenvValue = (value) => BARE.test(value) ? value : !/['\n\r]/.test(value) && !value.endsWith("\\") ? `'${value}'` : `"${value.replaceAll("\\", "\\\\").replaceAll('"', "\\\"").replaceAll(`
|
|
1212
|
+
`, "\\n").replaceAll("\r", "\\r").replaceAll("$", "\\$").replaceAll("`", "\\`")}"`;
|
|
1210
1213
|
function toDotenv(env) {
|
|
1211
|
-
return lines(entries(env).map(([key, value]) =>
|
|
1212
|
-
`, "\\n").replaceAll("\r", "\\r")}"`));
|
|
1214
|
+
return lines(entries(env).map(([key, value]) => `${key}=${dotenvValue(value)}`));
|
|
1213
1215
|
}
|
|
1214
1216
|
function toShell(env) {
|
|
1215
1217
|
return lines(entries(env).map(([key, value]) => `export ${key}='${value.replaceAll("'", "'\\''")}'`));
|
|
@@ -1239,7 +1241,7 @@ function requireTty({ io, flags }) {
|
|
|
1239
1241
|
throw new CliError('Refusing to print secrets to a pipe or file because an agent or a log can read it; pass --allow-non-tty if you mean it (or use "run" or "pull").', EXIT.usage);
|
|
1240
1242
|
}
|
|
1241
1243
|
}
|
|
1242
|
-
var OVERRIDES = /^(PATH|PATHEXT|COMSPEC|SYSTEMROOT|NODE_OPTIONS|NODE_PATH|SHELLOPTS|BASH_ENV|ENV|PERL5OPT|PERL5LIB|RUBYOPT|RUBYLIB|PROMPT_COMMAND|NODE_EXTRA_CA_CERTS|JAVA_TOOL_OPTIONS|_JAVA_OPTIONS|DOTNET_STARTUP_HOOKS|PYTHON.*|(LD|DYLD|BUN|GIT|SSH|NPM_CONFIG)_.*|.*_PRELOAD)$/i;
|
|
1244
|
+
var OVERRIDES = /^(PATH|PATHEXT|COMSPEC|SYSTEMROOT|NODE_OPTIONS|NODE_PATH|SHELLOPTS|BASH_ENV|ENV|PERL5OPT|PERL5LIB|RUBYOPT|RUBYLIB|PROMPT_COMMAND|NODE_EXTRA_CA_CERTS|NODE_TLS_REJECT_UNAUTHORIZED|AWS_CA_BUNDLE|GCONV_PATH|CLASSPATH|ZDOTDIR|GOPROXY|HOME|XDG_CONFIG_HOME|SSL_CERT_FILE|SSL_CERT_DIR|REQUESTS_CA_BUNDLE|CURL_CA_BUNDLE|HTTP_PROXY|HTTPS_PROXY|ALL_PROXY|NO_PROXY|JAVA_TOOL_OPTIONS|_JAVA_OPTIONS|DOTNET_STARTUP_HOOKS|LESSOPEN|LESSCLOSE|PAGER|MANPAGER|EDITOR|VISUAL|BROWSER|ERL_AFLAGS|ERL_FLAGS|ERL_ZFLAGS|ELIXIR_ERL_OPTIONS|JDK_JAVA_OPTIONS|RUSTC.*|PSMODULEPATH|PHPRC|PHP_INI_SCAN_DIR|GOTOOLCHAIN|GOFLAGS|PS4|PYTHON.*|(LD|DYLD|BUN|GIT|SSH|NPM_CONFIG|CARGO|YARN|PIP|LUA|GEM)_.*|.*_PRELOAD)$/i;
|
|
1243
1245
|
var overridingKeys = (keys) => keys.filter((key) => OVERRIDES.test(key));
|
|
1244
1246
|
function fetchEnvironment(ctx, project, environment) {
|
|
1245
1247
|
return withAccess(ctx, { project, environment }, async () => {
|
|
@@ -1552,7 +1554,7 @@ var get = async (ctx) => {
|
|
|
1552
1554
|
};
|
|
1553
1555
|
|
|
1554
1556
|
// apps/cli/update-public-key.txt
|
|
1555
|
-
var update_public_key_default = "";
|
|
1557
|
+
var update_public_key_default = "TeXlgoyHl0XXy2h5JOw2o/DTRB97Dpw+TWtoyuXrGrQ=";
|
|
1556
1558
|
|
|
1557
1559
|
// apps/cli/src/prompt.ts
|
|
1558
1560
|
import { readSync } from "node:fs";
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.
|
|
2
|
+
"version": "0.8.0",
|
|
3
3
|
"license": "AGPL-3.0-only",
|
|
4
4
|
"homepage": "https://secretstore.sh/docs/cli",
|
|
5
5
|
"publishConfig": {
|
|
@@ -20,10 +20,10 @@
|
|
|
20
20
|
"dist/"
|
|
21
21
|
],
|
|
22
22
|
"optionalDependencies": {
|
|
23
|
-
"@secretstore/cli-windows-x64": "0.
|
|
24
|
-
"@secretstore/cli-linux-x64": "0.
|
|
25
|
-
"@secretstore/cli-linux-arm64": "0.
|
|
26
|
-
"@secretstore/cli-darwin-x64": "0.
|
|
27
|
-
"@secretstore/cli-darwin-arm64": "0.
|
|
23
|
+
"@secretstore/cli-windows-x64": "0.8.0",
|
|
24
|
+
"@secretstore/cli-linux-x64": "0.8.0",
|
|
25
|
+
"@secretstore/cli-linux-arm64": "0.8.0",
|
|
26
|
+
"@secretstore/cli-darwin-x64": "0.8.0",
|
|
27
|
+
"@secretstore/cli-darwin-arm64": "0.8.0"
|
|
28
28
|
}
|
|
29
29
|
}
|