@secretstore/cli 0.7.1 → 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.
Files changed (2) hide show
  1. package/dist/secretstore.js +14 -12
  2. package/package.json +6 -6
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- // secretstore 0.7.1: readable bundle of apps/cli for Node.js 20+. Source: https://github.com/CodingDiego/secret-store (apps/cli/src). AGPL-3.0-only.
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.7.1",
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.3",
371
- oxlint: "^1.88.0",
372
- "oxlint-tsgolint": "^7.0.2004",
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]) => BARE.test(value) ? `${key}=${value}` : `${key}="${value.replaceAll("\\", "\\\\").replaceAll('"', "\\\"").replaceAll(`
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.7.1",
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.7.1",
24
- "@secretstore/cli-linux-x64": "0.7.1",
25
- "@secretstore/cli-linux-arm64": "0.7.1",
26
- "@secretstore/cli-darwin-x64": "0.7.1",
27
- "@secretstore/cli-darwin-arm64": "0.7.1"
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
  }