securewithtrace 0.20.1 → 0.20.2

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/index.js +34 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -26173,6 +26173,7 @@ function colorAccentUnderline(text, colorizer = source_default) {
26173
26173
  var readTokenSafe = readToken;
26174
26174
  var PRODUCTION_API_URL = "https://api.securewithtrace.com";
26175
26175
  var UNAUTHORIZED_STATUS = 401;
26176
+ var REFRESH_AUTH_FAILURE_STATUS_CODES = /* @__PURE__ */ new Set([400, 401]);
26176
26177
  function getApiBaseUrl() {
26177
26178
  const raw = process.env["TRACE_API_URL"];
26178
26179
  if (!raw) {
@@ -26217,9 +26218,24 @@ function getWorkosClientId() {
26217
26218
  }
26218
26219
  return clientId;
26219
26220
  }
26221
+ function parseRefreshFailureStatus(error48) {
26222
+ if (!(error48 instanceof Error)) {
26223
+ return null;
26224
+ }
26225
+ const statusMatch = error48.message.match(/\b([1-5]\d{2})\b/);
26226
+ if (!statusMatch?.[1]) {
26227
+ return null;
26228
+ }
26229
+ return Number.parseInt(statusMatch[1], 10);
26230
+ }
26231
+ function isRefreshAuthFailure(error48) {
26232
+ const status = parseRefreshFailureStatus(error48);
26233
+ return status !== null && REFRESH_AUTH_FAILURE_STATUS_CODES.has(status);
26234
+ }
26220
26235
  async function refreshStoredAccessToken() {
26221
26236
  const clientId = getWorkosClientId();
26222
26237
  const refreshToken = readRefreshToken();
26238
+ const tokenOrganizationId = extractOrganizationIdFromToken(readToken());
26223
26239
  if (!clientId || !refreshToken) {
26224
26240
  return null;
26225
26241
  }
@@ -26229,7 +26245,20 @@ async function refreshStoredAccessToken() {
26229
26245
  writeTokens(tokenResponse.access_token, nextRefreshToken);
26230
26246
  return tokenResponse.access_token;
26231
26247
  } catch (error48) {
26232
- if (error48 instanceof Error && (error48.message.includes(" 400 ") || error48.message.includes(" 401 "))) {
26248
+ if (tokenOrganizationId && isRefreshAuthFailure(error48)) {
26249
+ try {
26250
+ const tokenResponse = await refreshAccessToken(clientId, refreshToken, tokenOrganizationId);
26251
+ const nextRefreshToken = tokenResponse.refresh_token ?? refreshToken;
26252
+ writeTokens(tokenResponse.access_token, nextRefreshToken);
26253
+ return tokenResponse.access_token;
26254
+ } catch (orgRefreshError) {
26255
+ if (isRefreshAuthFailure(orgRefreshError)) {
26256
+ removeToken();
26257
+ }
26258
+ return null;
26259
+ }
26260
+ }
26261
+ if (isRefreshAuthFailure(error48)) {
26233
26262
  removeToken();
26234
26263
  }
26235
26264
  return null;
@@ -26247,7 +26276,7 @@ async function refreshStoredAccessTokenForOrganization(workosOrganizationId) {
26247
26276
  writeTokens(tokenResponse.access_token, nextRefreshToken);
26248
26277
  return true;
26249
26278
  } catch (error48) {
26250
- if (error48 instanceof Error && (error48.message.includes(" 400 ") || error48.message.includes(" 401 "))) {
26279
+ if (isRefreshAuthFailure(error48)) {
26251
26280
  removeToken();
26252
26281
  }
26253
26282
  return false;
@@ -27984,7 +28013,9 @@ function printRepositoriesTable(repositories) {
27984
28013
  repo.status === "CONNECTED" ? "connected" : "disconnected"
27985
28014
  ]
27986
28015
  );
27987
- const colWidths = headers.map((h, i) => Math.max(h.length, ...rows.map((r) => r[i].length)));
28016
+ const colWidths = headers.map(
28017
+ (h, i) => Math.max(h.length, ...rows.map((r) => (r[i] ?? "").length))
28018
+ );
27988
28019
  const pad = (s, w3) => s.padEnd(w3);
27989
28020
  console.log(headers.map((h, i) => pad(h, colWidths[i] ?? h.length)).join(" "));
27990
28021
  for (const row of rows) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "securewithtrace",
3
- "version": "0.20.1",
3
+ "version": "0.20.2",
4
4
  "description": "Official Trace CLI for vulnerability intelligence in your terminal",
5
5
  "type": "module",
6
6
  "bin": {