{"record":{"id":"80edfe4a7249f616","repo":"diegosouzapw/OmniRoute","slug":"decodecredentialblob-invalid-payload-missing-to","errorCode":null,"errorMessage":"decodeCredentialBlob: invalid payload — missing tokens","messagePattern":"decodeCredentialBlob: invalid payload — missing tokens","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/lib/oauth/credentialBlob.ts","lineNumber":98,"sourceCode":"  let parsed: { v?: unknown; provider?: unknown; tokens?: unknown };\n  try {\n    const json = Buffer.from(b64, \"base64url\").toString(\"utf8\");\n    parsed = JSON.parse(json);\n  } catch {\n    throw new Error(\"decodeCredentialBlob: invalid payload — could not parse JSON\");\n  }\n\n  if (parsed.v !== CREDENTIAL_BLOB_VERSION) {\n    throw new Error(\n      `decodeCredentialBlob: unsupported blob version ${String(parsed.v)} (expected ${CREDENTIAL_BLOB_VERSION})`\n    );\n  }\n  if (typeof parsed.provider !== \"string\" || !parsed.provider.trim()) {\n    throw new Error(\"decodeCredentialBlob: invalid payload — missing provider\");\n  }\n  const tokens = parsed.tokens as CredentialBlobTokens | undefined;\n  if (!tokens || typeof tokens !== \"object\") {\n    throw new Error(\"decodeCredentialBlob: invalid payload — missing tokens\");\n  }\n  if (typeof tokens.access_token !== \"string\" || !tokens.access_token) {\n    throw new Error(\"decodeCredentialBlob: invalid payload — missing access_token\");\n  }\n\n  return { provider: parsed.provider.trim(), tokens };\n}\n","sourceCodeStart":80,"sourceCodeEnd":106,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/src/lib/oauth/credentialBlob.ts#L80-L106","documentation":"Error \"decodeCredentialBlob: invalid payload — missing tokens\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at src/lib/oauth/credentialBlob.ts:98 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d","analyzedAt":"2026-08-25T18:35:09.898Z","schemaVersion":2},"datasetVersion":"2026-08-25T21:54:21.419Z"}