Compare commits

..

No commits in common. "98c8a2ad86331566058ca7cc12df5ee2b406fa2f" and "05f037383436cd0e30a6a12e7a4e08bf5b884ea8" have entirely different histories.

2 changed files with 18 additions and 29 deletions

View File

@ -38,13 +38,9 @@ type CacheLogin = {
export type CacheStore<T = Cache> = { export type CacheStore<T = Cache> = {
name: string; name: string;
/**
*
* @important init
*/
cacheData: CacheLogin; cacheData: CacheLogin;
/** /**
* cache, init * cache
*/ */
cache: T; cache: T;

View File

@ -1,21 +1,15 @@
import { Cache } from './login-cache.ts'; import { Cache, LoginCacheStore, LoginCacheStoreOpts } from './login-cache.ts';
import { homedir } from 'node:os'; import { homedir } from 'node:os';
import { join, dirname } from 'node:path'; import { join, dirname } from 'node:path';
import fs from 'node:fs'; import fs from 'node:fs';
import { readFileSync, writeFileSync, accessSync } from 'node:fs'; import { readFileSync, writeFileSync, accessSync } from 'node:fs';
import { readFile, writeFile, unlink, mkdir } from 'node:fs/promises'; import { readFile, writeFile, unlink, mkdir } from 'node:fs/promises';
export const fileExists = async ( export const fileExists = async (filePath: string, createIfNotExists = false) => {
filePath: string,
{ createIfNotExists = true, isFile = true, isDir = false }: { createIfNotExists?: boolean; isFile?: boolean; isDir?: boolean } = {},
) => {
try { try {
accessSync(filePath, fs.constants.F_OK); accessSync(filePath, fs.constants.F_OK);
return true; return true;
} catch (error) { } catch (error) {
if (createIfNotExists && isDir) { if (createIfNotExists) {
await mkdir(filePath, { recursive: true });
return true;
} else if (createIfNotExists && isFile) {
await mkdir(dirname(filePath), { recursive: true }); await mkdir(dirname(filePath), { recursive: true });
return false; return false;
} }
@ -31,9 +25,6 @@ export const readConfigFile = (filePath: string) => {
return {}; return {};
} }
}; };
export const writeConfigFile = (filePath: string, data: any) => {
writeFileSync(filePath, JSON.stringify(data, null, 2));
};
export const getHostName = () => { export const getHostName = () => {
const configDir = join(homedir(), '.config', 'envision'); const configDir = join(homedir(), '.config', 'envision');
const configFile = join(configDir, 'config.json'); const configFile = join(configDir, 'config.json');
@ -50,13 +41,14 @@ export class StorageNode implements Storage {
const configDir = join(homedir(), '.config', 'envision'); const configDir = join(homedir(), '.config', 'envision');
const hostname = getHostName(); const hostname = getHostName();
this.filePath = join(configDir, 'config', `${hostname}-storage.json`); this.filePath = join(configDir, 'config', `${hostname}-storage.json`);
fileExists(this.filePath, { isFile: true }); fileExists(this.filePath, true);
} }
async loadCache() { async loadCache() {
const filePath = this.filePath; const filePath = this.filePath;
try { try {
const data = await readConfigFile(filePath); const data = await readFile(filePath, 'utf-8');
this.cacheData = data; const jsonData = JSON.parse(data);
this.cacheData = jsonData;
} catch (error) { } catch (error) {
this.cacheData = {}; this.cacheData = {};
await writeFile(filePath, JSON.stringify(this.cacheData, null, 2)); await writeFile(filePath, JSON.stringify(this.cacheData, null, 2));
@ -89,23 +81,24 @@ export class LoginNodeCache implements Cache {
constructor(filepath?: string) { constructor(filepath?: string) {
this.filepath = filepath || join(homedir(), '.config', 'envision', 'config', `${getHostName()}-login.json`); this.filepath = filepath || join(homedir(), '.config', 'envision', 'config', `${getHostName()}-login.json`);
fileExists(this.filepath, { isFile: true }); fileExists(this.filepath, true);
} }
async get(_key: string) { async get(_key: string) {
const data = readFileSync(this.filepath, 'utf-8');
try { try {
const filePath = this.filepath; const jsonData = JSON.parse(data);
const data = readConfigFile(filePath); return jsonData;
return data;
} catch (error) { } catch (error) {
console.log('get error', error); console.log('get error', error);
return {}; return null;
} }
} }
async set(_key: string, value: any) { async set(_key: string, value: any) {
const data = readFileSync(this.filepath, 'utf-8');
try { try {
const data = readConfigFile(this.filepath); const jsonData = JSON.parse(data);
const newData = { ...data, ...value }; const newData = { ...jsonData, ...value };
writeConfigFile(this.filepath, newData); writeFileSync(this.filepath, JSON.stringify(newData, null, 2));
} catch (error) { } catch (error) {
console.log('set error', error); console.log('set error', error);
} }
@ -121,7 +114,7 @@ export class LoginNodeCache implements Cache {
} catch (error) { } catch (error) {
console.log('loadCache error', error); console.log('loadCache error', error);
const defaultData = { loginUsers: [] }; const defaultData = { loginUsers: [] };
writeConfigFile(filePath, defaultData); await writeFile(filePath, JSON.stringify(defaultData, null, 2));
return defaultData; return defaultData;
} }
} }