{"version":3,"sources":["../src/storage/jwt.tsx"],"sourcesContent":["interface JwtPayload {\n  aud: string;\n  authority: string;\n  companyId: string;\n  exp: number;\n  iss: string;\n  loginType: string;\n  scope: Record<string, string>;\n  userId: string;\n}\n\nconst isObject = (value: unknown): value is Record<string, unknown> => {\n  return typeof value === \"object\" && value !== null;\n};\n/**\n * 利用するパラメータが存在するかどうかを確認する\n */\nconst validateJwtPayload = (payload: unknown): JwtPayload => {\n  if (isObject(payload) === false) {\n    throw new Error(\"JWT payload is not an object\");\n  }\n\n  if (typeof payload?.exp !== \"number\" || typeof payload?.userId !== \"string\") {\n    throw new Error(\"JWT payload is missing required fields\");\n  }\n\n  return payload as unknown as JwtPayload;\n};\n\nexport const parseJwtPayload = (jwt: string): JwtPayload | null => {\n  try {\n    const splitted = jwt.split(\".\");\n    if (splitted.length !== 3) {\n      throw new Error(\"Invalid JWT\");\n    }\n    const [, payload] = splitted;\n    return validateJwtPayload(JSON.parse(atob(payload)));\n  } catch (error: unknown) {\n    console.error(error);\n    return null;\n  }\n};\n\nexport const checkJwtExpiration = (jwt: string): boolean => {\n  const payload = parseJwtPayload(jwt);\n  if (!payload) {\n    return false;\n  }\n  return new Date() < new Date(payload.exp * 1000);\n};\n"],"mappings":";AAWA,IAAM,WAAW,CAAC,UAAqD;AACrE,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAIA,IAAM,qBAAqB,CAAC,YAAiC;AAC3D,MAAI,SAAS,OAAO,MAAM,OAAO;AAC/B,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAEA,MAAI,QAAO,mCAAS,SAAQ,YAAY,QAAO,mCAAS,YAAW,UAAU;AAC3E,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AAEA,SAAO;AACT;AAEO,IAAM,kBAAkB,CAAC,QAAmC;AACjE,MAAI;AACF,UAAM,WAAW,IAAI,MAAM,GAAG;AAC9B,QAAI,SAAS,WAAW,GAAG;AACzB,YAAM,IAAI,MAAM,aAAa;AAAA,IAC/B;AACA,UAAM,CAAC,EAAE,OAAO,IAAI;AACpB,WAAO,mBAAmB,KAAK,MAAM,KAAK,OAAO,CAAC,CAAC;AAAA,EACrD,SAAS,OAAgB;AACvB,YAAQ,MAAM,KAAK;AACnB,WAAO;AAAA,EACT;AACF;AAEO,IAAM,qBAAqB,CAAC,QAAyB;AAC1D,QAAM,UAAU,gBAAgB,GAAG;AACnC,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AACA,SAAO,oBAAI,KAAK,IAAI,IAAI,KAAK,QAAQ,MAAM,GAAI;AACjD;","names":[]}