2023-06-22 06:22:35 +00:00
|
|
|
import { isBrowser } from "./env";
|
2023-06-16 08:58:50 +00:00
|
|
|
|
2023-06-15 15:53:21 +00:00
|
|
|
export type StoredData = {
|
2023-06-16 08:58:50 +00:00
|
|
|
anonymousId: string;
|
2023-06-15 15:53:21 +00:00
|
|
|
auth: { [endpoint: string]: { jwt: string } };
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export interface DataStore {
|
|
|
|
|
data: Partial<StoredData>;
|
|
|
|
|
load(): PromiseLike<void>;
|
|
|
|
|
save(): PromiseLike<void>;
|
|
|
|
|
}
|
|
|
|
|
|
2023-06-16 08:58:50 +00:00
|
|
|
export const dataStore: DataStore = isBrowser
|
2023-06-15 15:53:21 +00:00
|
|
|
? null
|
|
|
|
|
: (() => {
|
2023-09-10 02:25:23 +00:00
|
|
|
const dataFile = require("path").join(require("os").homedir(), ".tabby-client", "agent", "data.json");
|
2023-06-15 15:53:21 +00:00
|
|
|
const fs = require("fs-extra");
|
|
|
|
|
return {
|
|
|
|
|
data: {},
|
|
|
|
|
load: async function () {
|
2023-09-12 05:25:20 +00:00
|
|
|
await this.migrateFrom_0_3_0();
|
2023-06-15 15:53:21 +00:00
|
|
|
this.data = (await fs.readJson(dataFile, { throws: false })) || {};
|
|
|
|
|
},
|
|
|
|
|
save: async function () {
|
|
|
|
|
await fs.outputJson(dataFile, this.data);
|
|
|
|
|
},
|
2023-09-12 05:25:20 +00:00
|
|
|
migrateFrom_0_3_0: async function () {
|
|
|
|
|
const dataFile_0_3_0 = require("path").join(require("os").homedir(), ".tabby", "agent", "data.json");
|
|
|
|
|
const migratedFlag = require("path").join(require("os").homedir(), ".tabby", "agent", ".data_json_migrated");
|
|
|
|
|
if (
|
|
|
|
|
(await fs.pathExists(dataFile_0_3_0)) &&
|
|
|
|
|
!(await fs.pathExists(migratedFlag))
|
|
|
|
|
) {
|
|
|
|
|
const data = await fs.readJson(dataFile_0_3_0);
|
|
|
|
|
await fs.outputJson(dataFile, data);
|
|
|
|
|
await fs.outputFile(migratedFlag, "");
|
|
|
|
|
}
|
|
|
|
|
},
|
2023-06-15 15:53:21 +00:00
|
|
|
};
|
|
|
|
|
})();
|