Socket
Socket
Sign inDemoInstall

safetoken

Package Overview
Dependencies
2
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.3.9 to 1.3.10

16

dist/index.d.ts
export declare class SafeToken {
token: string;
refreshT: number;
tokenT: number;
refreshtoken: string;
lastrefreshTime: number;
lastAccessTime: number;
rtStoreKey: string;
key: string;
private FA_token;
private FR_token;
private refreshTime;
private accessTime;
private lastrefreshTime;
private lastAccessTime;
private rtStoreKey;
private key;
constructor(init?: {

@@ -11,0 +11,0 @@ timeWindow?: number;

@@ -7,23 +7,27 @@ import { readFileSync, writeFileSync } from "node:fs";

export class SafeToken {
token;
refreshT;
tokenT;
refreshtoken;
// ? full token
FA_token;
FR_token;
refreshTime;
accessTime;
// ? access time
lastrefreshTime;
lastAccessTime;
rtStoreKey = "_refresh_token";
// ? FR key
rtStoreKey = "_safetoken";
key;
constructor(init) {
// ? reset access tokens
this.token = SafeToken.create();
this.FA_token = SafeToken.create();
this.lastAccessTime = Date.now();
// ? time window setup
this.tokenT = init?.timeWindow || 3600_000;
this.refreshT = init?.rtDays || 29;
this.accessTime = init?.timeWindow || 3600_000;
this.refreshTime = init?.rtDays || 29;
// ? refresh file name
this.rtStoreKey = init?.rtStoreKey || "_refresh_token";
if (init?.rtStoreKey)
this.rtStoreKey = init.rtStoreKey;
//? setup encryption keys
this.key = init?.encryptionKey || "";
// ? retrieve last refresh tokens
[this.lastrefreshTime, this.refreshtoken] = SafeToken.retrToken(this.rtStoreKey);
[this.lastrefreshTime, this.FR_token] = SafeToken.retrToken(this.rtStoreKey);
}

@@ -38,10 +42,10 @@ newAccessToken(data = "", _r) {

let si = Math.floor(Math.random() *
((_r ? this.refreshtoken.length : this.token.length) - 10 + 1));
((_r ? this.FR_token.length : this.FA_token.length) - 10 + 1));
if (String(si).length < 2) {
si = (si || 1) * 10;
}
if (_r && si > this.refreshtoken.length - 15) {
if (_r && si > this.FR_token.length - 15) {
si = si - 77;
}
if (!_r && si > this.token.length - 15) {
if (!_r && si > this.FA_token.length - 15) {
si = si - 77;

@@ -51,3 +55,3 @@ }

":" +
(data + (_r ? this.refreshtoken : this.token).slice(si - 10, si)));
(data + (_r ? this.FR_token : this.FA_token).slice(si - 10, si)));
}

@@ -60,3 +64,3 @@ newRefreshToken(data = "", _r) {

const diff = SafeToken.timeDiff(this.lastAccessTime);
if (diff.ms > this.tokenT) {
if (diff.ms > this.accessTime) {
this.resetAccessToken();

@@ -75,3 +79,3 @@ }

}
const key = (_r ? this.refreshtoken : this.token).slice(Number(si) - 10, Number(si));
const key = (_r ? this.FR_token : this.FA_token).slice(Number(si) - 10, Number(si));
return key === hash && data;

@@ -81,3 +85,3 @@ }

const diff = SafeToken.timeDiff(this.lastrefreshTime);
if (diff.day > this.refreshT) {
if (diff.day > this.refreshTime) {
this.resetRefreshToken();

@@ -88,9 +92,9 @@ }

resetAccessToken() {
this.token = SafeToken.create();
this.FA_token = SafeToken.create();
this.lastAccessTime = Date.now();
}
resetRefreshToken() {
this.refreshtoken = SafeToken.create();
this.FR_token = SafeToken.create();
this.lastrefreshTime = Date.now();
writeFileSync(this.rtStoreKey, this.lastrefreshTime + ":" + ":" + this.refreshtoken);
writeFileSync(this.rtStoreKey, this.lastrefreshTime + ":" + ":" + this.FR_token);
}

@@ -115,4 +119,9 @@ static timeDiff(timestamp) {

if (data) {
const [date, iv, lastStoredToken] = data.split(":");
rt = [Number(date), lastStoredToken];
const [date, lastStoredToken] = data.split(":");
if (data && lastStoredToken) {
rt = [Number(date), lastStoredToken];
}
else {
writeFileSync(rtStoreKey, rt[0] + ":" + rt[1]);
}
}

@@ -119,0 +128,0 @@ }

{
"name": "safetoken",
"version": "1.3.9",
"version": "1.3.10",
"description": "SafeToken - Generate/Validate secured tokens for authentication seamlessly",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc