UNPKG

1.11 kBJavaScriptView Raw
1'use strict';
2
3const debug = require('debug')('simple-oauth2:access-token');
4
5const EXPIRES_AT_PROPERTY_NAME = 'expires_at';
6const EXPIRES_IN_PROPERTY_NAME = 'expires_in';
7
8function getExpirationDate(expiresIn) {
9 return new Date(Date.now() + Number.parseInt(expiresIn, 10) * 1000);
10}
11
12function parseExpirationDate(expirationDate) {
13 if (expirationDate instanceof Date) {
14 return expirationDate;
15 }
16
17 // UNIX timestamp
18 if (typeof expirationDate === 'number') {
19 return new Date(expirationDate * 1000);
20 }
21
22 // ISO 8601 string
23 return new Date(expirationDate);
24}
25
26function parseToken(token) {
27 const tokenProperties = {};
28
29 if (EXPIRES_AT_PROPERTY_NAME in token) {
30 tokenProperties[EXPIRES_AT_PROPERTY_NAME] = parseExpirationDate(token[EXPIRES_AT_PROPERTY_NAME]);
31 } else if (EXPIRES_IN_PROPERTY_NAME in token) {
32 tokenProperties[EXPIRES_AT_PROPERTY_NAME] = getExpirationDate(token[EXPIRES_IN_PROPERTY_NAME]);
33 } else {
34 debug('No token expiration property was found. Ignoring date parsing');
35 }
36
37 return {
38 ...token,
39 ...tokenProperties,
40 };
41}
42
43module.exports = { parseToken };